mirror of
https://github.com/SpinalHDL/VexRiscv.git
synced 2025-01-03 03:43:39 -05:00
RV32IC is passing some of the compressed Riscv-test tests
This commit is contained in:
parent
f872d599e2
commit
af638e7bde
13 changed files with 5854 additions and 20 deletions
|
@ -7,12 +7,14 @@ import spinal.lib._
|
|||
import scala.collection.mutable
|
||||
import scala.collection.mutable.ArrayBuffer
|
||||
|
||||
trait PipelineConfig[T]
|
||||
|
||||
trait Pipeline {
|
||||
type T <: Pipeline
|
||||
val plugins = ArrayBuffer[Plugin[T]]()
|
||||
var stages = ArrayBuffer[Stage]()
|
||||
var unremovableStages = mutable.Set[Stage]()
|
||||
val configs = mutable.HashMap[PipelineConfig[_], Any]()
|
||||
// val services = ArrayBuffer[Any]()
|
||||
|
||||
def indexOf(stage : Stage) = stages.indexOf(stage)
|
||||
|
@ -28,6 +30,9 @@ trait Pipeline {
|
|||
filtered.length != 0
|
||||
}
|
||||
|
||||
def update[T](that : PipelineConfig[T], value : T) : Unit = configs(that) = value
|
||||
def apply[T](that : PipelineConfig[T]) : T = configs(that).asInstanceOf[T]
|
||||
|
||||
def build(): Unit ={
|
||||
plugins.foreach(_.pipeline = this.asInstanceOf[T])
|
||||
plugins.foreach(_.setup(this.asInstanceOf[T]))
|
||||
|
|
|
@ -5,7 +5,9 @@ import spinal.core._
|
|||
|
||||
case class VexRiscvConfig(plugins : Seq[Plugin[VexRiscv]]){
|
||||
|
||||
|
||||
//Default Stageables
|
||||
object IS_RVC extends Stageable(Bool)
|
||||
object BYPASSABLE_EXECUTE_STAGE extends Stageable(Bool)
|
||||
object BYPASSABLE_MEMORY_STAGE extends Stageable(Bool)
|
||||
object RS1 extends Stageable(Bits(32 bits))
|
||||
|
@ -43,7 +45,7 @@ case class VexRiscvConfig(plugins : Seq[Plugin[VexRiscv]]){
|
|||
|
||||
|
||||
object Src1CtrlEnum extends SpinalEnum(binarySequential){
|
||||
val RS, IMU, FOUR = newElement() //IMU, IMZ IMJB
|
||||
val RS, IMU, PC_INCREMENT = newElement() //IMU, IMZ IMJB
|
||||
}
|
||||
|
||||
object Src2CtrlEnum extends SpinalEnum(binarySequential){
|
||||
|
@ -55,6 +57,7 @@ case class VexRiscvConfig(plugins : Seq[Plugin[VexRiscv]]){
|
|||
|
||||
|
||||
|
||||
object RVC_GEN extends PipelineConfig[Boolean]
|
||||
class VexRiscv(val config : VexRiscvConfig) extends Component with Pipeline{
|
||||
type T = VexRiscv
|
||||
import config._
|
||||
|
@ -76,6 +79,8 @@ class VexRiscv(val config : VexRiscvConfig) extends Component with Pipeline{
|
|||
decode.arbitration.removeIt.noBackendCombMerge //Verilator perf
|
||||
memory.arbitration.removeIt.noBackendCombMerge
|
||||
execute.arbitration.flushAll.noBackendCombMerge
|
||||
|
||||
this(RVC_GEN) = false
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ class BranchPlugin(earlyBranch : Boolean,
|
|||
)
|
||||
|
||||
val jActions = List[(Stageable[_ <: BaseType],Any)](
|
||||
SRC1_CTRL -> Src1CtrlEnum.FOUR,
|
||||
SRC1_CTRL -> Src1CtrlEnum.PC_INCREMENT,
|
||||
SRC2_CTRL -> Src2CtrlEnum.PC,
|
||||
SRC_USE_SUB_LESS -> False,
|
||||
REGFILE_WRITE_VALID -> True
|
||||
|
@ -139,7 +139,7 @@ class BranchPlugin(earlyBranch : Boolean,
|
|||
}
|
||||
|
||||
if(catchAddressMisaligned) { //TODO conflict with instruction cache two stage
|
||||
branchExceptionPort.valid := arbitration.isValid && input(BRANCH_DO) && jumpInterface.payload(1 downto 0) =/= 0
|
||||
branchExceptionPort.valid := arbitration.isValid && input(BRANCH_DO) && (if(pipeline(RVC_GEN)) jumpInterface.payload(0 downto 0) =/= 0 else jumpInterface.payload(1 downto 0) =/= 0)
|
||||
branchExceptionPort.code := 0
|
||||
branchExceptionPort.badAddr := jumpInterface.payload
|
||||
}
|
||||
|
|
|
@ -278,6 +278,8 @@ object SymplifyBit{
|
|||
}
|
||||
|
||||
|
||||
def getPrimeImplicantsByTrue(trueTerms: Seq[Masked], inputWidth : Int) : Seq[Masked] = getPrimeImplicantsByTrueAndDontCare(trueTerms, Nil, inputWidth)
|
||||
|
||||
// Return primes implicants for the trueTerms, default value is False.
|
||||
// You can insert don't care values by adding non-prime implicants in the trueTerms
|
||||
// Will simplify the trueTerms from the most constrained ones to the least constrained ones
|
||||
|
|
|
@ -155,6 +155,94 @@ trait IBusFetcher{
|
|||
def nextPc() : (Bool, UInt)
|
||||
}
|
||||
|
||||
object RvcDecompressor{
|
||||
|
||||
def main(args: Array[String]): Unit = {
|
||||
SpinalVerilog(new Component{
|
||||
Delay(out(apply(Delay(in Bits(16 bits),2))),2)
|
||||
}.setDefinitionName("Decompressor"))
|
||||
}
|
||||
|
||||
def apply(i : Bits): Bits ={
|
||||
val ret = Bits(32 bits).assignDontCare()
|
||||
|
||||
val rch = B"01" ## i(9 downto 7)
|
||||
val rcl = B"01" ## i(4 downto 2)
|
||||
|
||||
val addi5spnImm = B"00" ## i(10 downto 7) ## i(12 downto 11) ## i(5) ## i(6) ## B"00"
|
||||
val lwImm = B"00000" ## i(5) ## i(12 downto 10) ## i(6) ## B"00"
|
||||
def swImm = lwImm
|
||||
val addImm = B((11 downto 5) -> i(12), (4 downto 0) -> i(6 downto 2))
|
||||
def lImm = addImm
|
||||
val jalImm = B((9 downto 0) -> i(12)) ## i(8) ## i(10 downto 9) ## i(6) ## i(7) ## i(2) ## i(11) ## i(5 downto 3) ## B"0"
|
||||
val luiImm = B((14 downto 0) -> i(12)) ## i(6 downto 2) ## B"0000_0000_0000"
|
||||
val shiftImm = i(6 downto 2)
|
||||
val addi16spImm = B((2 downto 0) -> i(12)) ## i(4 downto 3) ## i(5) ## i(2) ## i(6) ## B"0000"
|
||||
val jImm = B((9 downto 0) -> i(12)) ## i(8) ## i(10 downto 9) ## i(6) ## i(7) ## i(2) ## i(11) ## i(5 downto 3) ## B"0"
|
||||
val bImm = B((4 downto 0) -> i(12)) ## i(6 downto 5) ## i(2) ## i(11 downto 10) ## i(4 downto 3) ## B"0"
|
||||
|
||||
def lwspImm = B"0000" ## i(3 downto 2) ## i(12) ## i(6 downto 4) ## B"00"
|
||||
def swspImm = B"0000" ## i(8 downto 7) ## i(12 downto 9) ## B"00"
|
||||
|
||||
|
||||
val x0 = B"00000"
|
||||
val x1 = B"00001"
|
||||
val x2 = B"00010"
|
||||
|
||||
switch(i(1 downto 0) ## i(15 downto 13)){
|
||||
is(0){ret := addi5spnImm ## B"00010" ## B"000" ## rcl ## B"0010011"} //C.ADDI4SPN -> addi rd0, x2, nzuimm[9:2].
|
||||
is(2){ret := lwImm ## rch ## B"010" ## rcl ## B"0000011"} //C.LW -> lw rd', offset[6:2](rs1')
|
||||
is(6){ret := swImm(11 downto 5) ## rcl ## rch ## B"010" ## swImm(4 downto 0) ## B"0100011"} //C.SW -> sw rs2',offset[6:2](rs1')
|
||||
is(8){ret := addImm ## i(11 downto 7) ## B"000" ## i(11 downto 7) ## B"0010011"} //C.ADDI -> addi rd, rd, nzimm[5:0].
|
||||
is(9){ret := jalImm(20) ## jalImm(10 downto 1) ## jalImm(11) ## jalImm(19 downto 12) ## x1 ## B"1101111"} //C.JAL -> jalr x1, rs1, 0.
|
||||
is(10){ret := lImm ## B"00000" ## B"000" ## i(11 downto 7) ## B"0010011"} //C.LI -> addi rd, x0, imm[5:0].
|
||||
is(11){ //C.ADDI16SP C.LUI ->
|
||||
val addi16sp = addi16spImm ## i(11 downto 7) ## B"000" ## i(11 downto 7) ## B"0010011"
|
||||
val lui = luiImm(31 downto 12) ## i(11 downto 7) ## B"0110111"
|
||||
ret := (i(11 downto 7) === 2) ? addi16sp | lui
|
||||
}
|
||||
is(12){
|
||||
val isImmediate = i(11 downto 10) =/= "11"
|
||||
val isShift = !i(11)
|
||||
val func3 = i(11 downto 10).mux(
|
||||
0 -> B"101",
|
||||
1 -> B"101",
|
||||
2 -> B"111",
|
||||
3 -> i(6 downto 5).mux(
|
||||
0 -> B"000",
|
||||
1 -> B"100",
|
||||
2 -> B"110",
|
||||
3 -> B"111"
|
||||
)
|
||||
)
|
||||
val msbs = Mux(
|
||||
sel = i(11 downto 10) === "10",
|
||||
whenTrue = B((6 downto 0) -> i(12)), //andi
|
||||
whenFalse = B"0" ## (i(11 downto 10) === B"01" || (i(11 downto 10) === B"11" && i(6 downto 5) === B"00")) ## B"00000"
|
||||
)
|
||||
val rs2Shift = isShift ? shiftImm | rcl
|
||||
val opc = (isImmediate ? B"0010011" | B"0110011")
|
||||
ret := msbs ## rs2Shift ## rch ## func3 ## rch ## opc
|
||||
}
|
||||
is(13){ ret := jImm(20) ## jImm(10 downto 1) ## jImm(11) ## jImm(19 downto 12) ## x0 ## B"1101111"}
|
||||
is(14){ ret := bImm(12) ## bImm(10 downto 5) ## x0 ## rch ## B"000" ## bImm(4 downto 1) ## bImm(11) ## B"1100011" }
|
||||
is(15){ ret := bImm(12) ## bImm(10 downto 5) ## x0 ## rch ## B"001" ## bImm(4 downto 1) ## bImm(11) ## B"1100011" }
|
||||
is(16){ ret := B"0000000" ## i(6 downto 2) ## i(11 downto 7) ## B"001" ## i(11 downto 7) ## B"0010011" }
|
||||
is(18){ ret := lwspImm ## x2 ## B"010" ## i(11 downto 7) ## B"0000011" }
|
||||
is(20) {
|
||||
val add = B"000_0000" ## i(6 downto 2) ## (i(12) ? i(11 downto 7) | x0) ## B"000" ## i(11 downto 7) ## B"0110011" //add => add rd, rd, rs2 mv => add rd, x0, rs2
|
||||
val j = B"0000_0000_0000" ## i(11 downto 7) ## B"000" ## (i(12) ? x1 | x0) ## B"1100111" //jr => jalr x0, rs1, 0. jalr => jalr x1, rs1, 0.
|
||||
val ebreak = B"000000000001_00000_000_00000_1110011" //EBREAK
|
||||
val addJ = (i(6 downto 2) === 0) ? j | add
|
||||
ret := (i(12 downto 2) === B"100_0000_0000") ? ebreak | addJ
|
||||
}
|
||||
is(22){ ret := swspImm(11 downto 5) ## i(6 downto 2) ## x2 ## B"010" ## swImm(4 downto 0) ## B"0100011" }
|
||||
}
|
||||
|
||||
ret
|
||||
}
|
||||
}
|
||||
|
||||
class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean, pendingMax : Int = 7) extends Plugin[VexRiscv] with JumpService with IBusFetcher{
|
||||
var iBus : IBusSimpleBus = null
|
||||
var prefetchExceptionPort : Flow[ExceptionCause] = null
|
||||
|
@ -162,6 +250,7 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
def keepPcPlus4 = false
|
||||
def decodePcGen = true
|
||||
def compressedGen = true
|
||||
assert(!(compressedGen && !decodePcGen))
|
||||
lazy val fetcherHalt = False
|
||||
lazy val decodeNextPcValid = Bool
|
||||
lazy val decodeNextPc = UInt(32 bits)
|
||||
|
@ -185,6 +274,8 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
val exceptionService = pipeline.service(classOf[ExceptionService])
|
||||
decodeExceptionPort = exceptionService.newExceptionPort(pipeline.decode,1).setName("iBusErrorExceptionnPort")
|
||||
}
|
||||
|
||||
pipeline(RVC_GEN) = compressedGen
|
||||
}
|
||||
|
||||
override def build(pipeline: VexRiscv): Unit = {
|
||||
|
@ -221,12 +312,20 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
pcReg := pcPlus4
|
||||
}
|
||||
|
||||
//Realign
|
||||
if(compressedGen){
|
||||
when(output.fire){
|
||||
pcReg(1 downto 0) := 0
|
||||
}
|
||||
}
|
||||
|
||||
//application of the selected jump request
|
||||
when(jump.pcLoad.valid) {
|
||||
pcReg := jump.pcLoad.payload
|
||||
}
|
||||
|
||||
|
||||
|
||||
output.valid := (RegNext(True) init (False)) // && !jump.pcLoad.valid
|
||||
output.payload := pcReg
|
||||
}
|
||||
|
@ -234,10 +333,14 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
val decodePc = ifGen(decodePcGen)(new Area {
|
||||
//PC calculation without Jump
|
||||
val pcReg = Reg(UInt(32 bits)) init (resetVector) addAttribute (Verilator.public)
|
||||
val pcPlus4 = pcReg + 4
|
||||
if (keepPcPlus4) KeepAttribute(pcPlus4)
|
||||
val pcPlus = if(compressedGen)
|
||||
pcReg + ((decode.input(IS_RVC)) ? U(2) | U(4))
|
||||
else
|
||||
pcReg + 4
|
||||
|
||||
if (keepPcPlus4) KeepAttribute(pcPlus)
|
||||
when(decode.arbitration.isFiring) {
|
||||
pcReg := pcPlus4
|
||||
pcReg := pcPlus
|
||||
}
|
||||
|
||||
//application of the selected jump request
|
||||
|
@ -258,9 +361,16 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
pendingCmd := pendingCmdNext
|
||||
|
||||
iBus.cmd.valid := input.valid && output.ready && pendingCmd =/= pendingMax
|
||||
iBus.cmd.pc := input.payload
|
||||
iBus.cmd.pc := input.payload(31 downto 2) @@ "00"
|
||||
}
|
||||
|
||||
case class FetchRsp() extends Bundle {
|
||||
val pc = UInt(32 bits)
|
||||
val rsp = IBusSimpleRsp()
|
||||
val isRvc = Bool
|
||||
}
|
||||
|
||||
|
||||
val iBusRsp = new Area {
|
||||
val input = iBusCmd.output.m2sPipe(flush)// ASYNC .throwWhen(flush)
|
||||
|
||||
|
@ -273,10 +383,6 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
|
||||
val rsp = iBus.rsp.throwWhen(discardCounter =/= 0).toStream.s2mPipe(flush)
|
||||
|
||||
case class FetchRsp() extends Bundle {
|
||||
val pc = UInt(32 bits)
|
||||
val rsp = IBusSimpleRsp()
|
||||
}
|
||||
|
||||
val fetchRsp = FetchRsp()
|
||||
fetchRsp.pc := input.payload
|
||||
|
@ -285,12 +391,42 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
|
||||
|
||||
val output = StreamJoin(Seq(input, rsp), fetchRsp)
|
||||
|
||||
}
|
||||
|
||||
val decompressor = ifGen(decodePcGen)(new Area{
|
||||
def input = iBusRsp.output
|
||||
val output = Stream(FetchRsp())
|
||||
|
||||
val bufferValid = RegInit(False)
|
||||
val bufferData = Reg(Bits(16 bits))
|
||||
|
||||
val raw = Mux(
|
||||
sel = bufferValid,
|
||||
whenTrue = input.rsp.inst(15 downto 0) ## bufferData,
|
||||
whenFalse = input.rsp.inst(31 downto 16) ## (input.pc(1) ? input.rsp.inst(31 downto 16) | input.rsp.inst(15 downto 0))
|
||||
)
|
||||
val isRvc = raw(1 downto 0) =/= 3
|
||||
val decompressed = RvcDecompressor(raw(15 downto 0))
|
||||
output.valid := isRvc ? (bufferValid || input.valid) | (input.valid && (bufferValid || !input.pc(1)))
|
||||
output.pc := input.pc
|
||||
output.isRvc := isRvc
|
||||
output.rsp.inst := isRvc ? decompressed | raw
|
||||
output.rsp.error := False
|
||||
input.ready := (bufferValid ? (!isRvc && output.ready) | (input.pc(1) || output.ready))
|
||||
|
||||
|
||||
bufferValid clearWhen(output.fire)
|
||||
when(input.ready){
|
||||
when(input.valid) {
|
||||
bufferValid := !(!isRvc && !input.pc(1) && !bufferValid)
|
||||
}
|
||||
bufferData := input.rsp.inst(31 downto 16)
|
||||
}
|
||||
bufferValid.clearWhen(flush)
|
||||
})
|
||||
|
||||
val injector = new Area {
|
||||
val inputBeforeHalt = iBusRsp.output//.s2mPipe(flush)
|
||||
val inputBeforeHalt = if(decodePcGen) decompressor.output else iBusRsp.output//.s2mPipe(flush)
|
||||
val input = inputBeforeHalt.haltWhen(fetcherHalt)
|
||||
val stage = input.m2sPipe(flush || decode.arbitration.isRemoved)
|
||||
|
||||
|
@ -308,6 +444,7 @@ class IBusSimplePlugin(interfaceKeepData : Boolean, catchAccessFault : Boolean,
|
|||
decode.insert(INSTRUCTION) := stage.rsp.inst
|
||||
decode.insert(INSTRUCTION_ANTICIPATED) := Mux(decode.arbitration.isStuck, decode.input(INSTRUCTION), input.rsp.inst)
|
||||
decode.insert(INSTRUCTION_READY) := True
|
||||
if(compressedGen) decode.insert(IS_RVC) := stage.isRvc
|
||||
|
||||
if(catchAccessFault){
|
||||
decodeExceptionPort.valid := decode.arbitration.isValid && stage.rsp.error
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package vexriscv.plugin
|
||||
|
||||
import vexriscv.{Riscv, VexRiscv}
|
||||
import vexriscv.{RVC_GEN, Riscv, VexRiscv}
|
||||
import spinal.core._
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@ class SrcPlugin(separatedAddSub : Boolean, executeInsertion : Boolean = false) e
|
|||
val imm = Riscv.IMM(input(INSTRUCTION))
|
||||
insert(SRC1) := input(SRC1_CTRL).mux(
|
||||
Src1CtrlEnum.RS -> output(RS1),
|
||||
Src1CtrlEnum.FOUR -> B(4),
|
||||
Src1CtrlEnum.PC_INCREMENT -> (if(pipeline(RVC_GEN)) Mux(input(IS_RVC), B(2), B(4)) else B(4)).resized,
|
||||
Src1CtrlEnum.IMU -> imm.u.resized
|
||||
)
|
||||
insert(SRC2) := input(SRC2_CTRL).mux(
|
||||
|
|
|
@ -8,12 +8,12 @@ onChipRam 0x0000000000000000 0x0000000000002000 w !xr
|
|||
Linker script and memory map
|
||||
|
||||
LOAD build/src/crt.o
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.1.1/rv32i/ilp32/libgcc.a
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.2.0/rv32i/ilp32/libgcc.a
|
||||
START GROUP
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.1.1/../../../../riscv64-unknown-elf/lib/rv32i/ilp32/libc.a
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.1.1/../../../../riscv64-unknown-elf/lib/rv32i/ilp32/libgloss.a
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.2.0/../../../../riscv64-unknown-elf/lib/rv32i/ilp32/libc.a
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.2.0/../../../../riscv64-unknown-elf/lib/rv32i/ilp32/libgloss.a
|
||||
END GROUP
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.1.1/rv32i/ilp32/libgcc.a
|
||||
LOAD /opt/riscv/bin/../lib/gcc/riscv64-unknown-elf/7.2.0/rv32i/ilp32/libgcc.a
|
||||
0x0000000000000000 . = 0x0
|
||||
|
||||
.crt_section 0x0000000000000000 0xd0
|
||||
|
|
|
@ -386,7 +386,10 @@ public:
|
|||
#ifdef REF
|
||||
if(bootPc != -1) top->VexRiscv->core->prefetch_pc = bootPc;
|
||||
#else
|
||||
if(bootPc != -1) top->VexRiscv->IBusSimplePlugin_pcCalc_pcReg = bootPc;
|
||||
if(bootPc != -1) {
|
||||
top->VexRiscv->IBusSimplePlugin_fetchPc_pcReg = bootPc;
|
||||
top->VexRiscv->IBusSimplePlugin_decodePc_pcReg = bootPc;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
|
@ -451,6 +454,7 @@ public:
|
|||
|
||||
for(SimElement* simElement : simElements) simElement->preCycle();
|
||||
|
||||
#ifndef COMPRESSED
|
||||
if(withInstructionReadCheck){
|
||||
if(top->VexRiscv->decode_arbitration_isValid && !top->VexRiscv->decode_arbitration_haltItself && !top->VexRiscv->decode_arbitration_flushAll){
|
||||
uint32_t expectedData;
|
||||
|
@ -459,6 +463,7 @@ public:
|
|||
assertEq(top->VexRiscv->decode_INSTRUCTION,expectedData);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
checks();
|
||||
//top->eval();
|
||||
|
@ -1719,6 +1724,7 @@ int main(int argc, char **argv, char **env) {
|
|||
for(const string &name : riscvTestMemory){
|
||||
redo(REDO,RiscvTest(name).run();)
|
||||
}
|
||||
|
||||
#ifdef MUL
|
||||
for(const string &name : riscvTestMul){
|
||||
redo(REDO,RiscvTest(name).run();)
|
||||
|
@ -1730,6 +1736,10 @@ int main(int argc, char **argv, char **env) {
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef COMPRESSED
|
||||
redo(REDO,RiscvTest("rv32uc-p-rvc").bootAt(0x800000FCu)->run());
|
||||
#endif
|
||||
|
||||
#ifdef CSR
|
||||
uint32_t machineCsrRef[] = {1,11, 2,0x80000003u, 3,0x80000007u, 4,0x8000000bu, 5,6,7,0x80000007u ,
|
||||
8,6,9,6,10,4,11,4, 12,13,0, 14,2, 15,5,16,17,1 };
|
||||
|
|
|
@ -22,6 +22,7 @@ TRACE_WITH_TIME=no
|
|||
REF_TIME=no
|
||||
THREAD_COUNT?=4
|
||||
MTIME_INSTR_FACTOR?=no
|
||||
COMPRESSED?=no
|
||||
|
||||
|
||||
ADDCFLAGS += -CFLAGS -DIBUS_${IBUS}
|
||||
|
@ -31,6 +32,10 @@ ADDCFLAGS += -CFLAGS -pthread
|
|||
|
||||
ADDCFLAGS += -CFLAGS -DTHREAD_COUNT=${THREAD_COUNT}
|
||||
|
||||
ifeq ($(COMPRESSED),yes)
|
||||
ADDCFLAGS += -CFLAGS -DCOMPRESSED
|
||||
endif
|
||||
|
||||
ifeq ($(DHRYSTONE),yes)
|
||||
ADDCFLAGS += -CFLAGS -DDHRYSTONE
|
||||
endif
|
||||
|
|
1
src/test/python/tool/disasm.s
Normal file
1
src/test/python/tool/disasm.s
Normal file
|
@ -0,0 +1 @@
|
|||
.word 0xf47413
|
11
src/test/python/tool/hexToAsm.py
Executable file
11
src/test/python/tool/hexToAsm.py
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env python3
|
||||
|
||||
from os import system
|
||||
from sys import argv
|
||||
|
||||
with open("disasm.s", "w") as f:
|
||||
instr = int(argv[1], 16)
|
||||
print(".word 0x%04x" % (instr), file=f)
|
||||
|
||||
system("riscv64-unknown-elf-gcc -c disasm.s")
|
||||
system("riscv64-unknown-elf-objdump -d -M numeric,no-aliases disasm.o")
|
4904
src/test/resources/asm/rv32uc-p-rvc.dump
Normal file
4904
src/test/resources/asm/rv32uc-p-rvc.dump
Normal file
File diff suppressed because it is too large
Load diff
754
src/test/resources/hex/rv32uc-p-rvc.hex
Normal file
754
src/test/resources/hex/rv32uc-p-rvc.hex
Normal file
|
@ -0,0 +1,754 @@
|
|||
:0200000480007A
|
||||
:100000006F00C004732F2034930F8000630AFF0336
|
||||
:10001000930F90006306FF03930FB0006302FF038A
|
||||
:10002000170F0080130F0FFE63040F0067000F000F
|
||||
:10003000732F203463540F006F00400093E19153FD
|
||||
:10004000173F000023203FFC6FF09FFF732540F116
|
||||
:1000500063100500970200009382020173905230F2
|
||||
:1000600073500018970200009382C20173905230BF
|
||||
:100070009302F0FF7390023B9302F0017390023AF7
|
||||
:1000800097020000938282017390523073502030A7
|
||||
:1000900073503030735040309301000097020000DD
|
||||
:1000A000938282F673905230130510001315F501F8
|
||||
:1000B000634805000F00F00F93011000730000006B
|
||||
:1000C00097020080938202F4638E020073905210B4
|
||||
:1000D000B7B20000938292107390223073232030C5
|
||||
:1000E000E39E62F473500030970200009382420155
|
||||
:1000F00073901234732540F1730020309301200077
|
||||
:100100009305A0296F10B06F1032547698BADCFEB8
|
||||
:100110001032547698BADCFE130000001300000081
|
||||
:100120001300000013000000130000001300000083
|
||||
:100130001300000013000000130000001300000073
|
||||
:100140001300000013000000130000001300000063
|
||||
:100150001300000013000000130000001300000053
|
||||
:100160001300000013000000130000001300000043
|
||||
:100170001300000013000000130000001300000033
|
||||
:100180001300000013000000130000001300000023
|
||||
:100190001300000013000000130000001300000013
|
||||
:1001A0001300000013000000130000001300000003
|
||||
:1001B00013000000130000001300000013000000F3
|
||||
:1001C00013000000130000001300000013000000E3
|
||||
:1001D00013000000130000001300000013000000D3
|
||||
:1001E00013000000130000001300000013000000C3
|
||||
:1001F00013000000130000001300000013000000B3
|
||||
:1002000013000000130000001300000013000000A2
|
||||
:100210001300000013000000130000001300000092
|
||||
:100220001300000013000000130000001300000082
|
||||
:100230001300000013000000130000001300000072
|
||||
:100240001300000013000000130000001300000062
|
||||
:100250001300000013000000130000001300000052
|
||||
:100260001300000013000000130000001300000042
|
||||
:100270001300000013000000130000001300000032
|
||||
:100280001300000013000000130000001300000022
|
||||
:100290001300000013000000130000001300000012
|
||||
:1002A0001300000013000000130000001300000002
|
||||
:1002B00013000000130000001300000013000000F2
|
||||
:1002C00013000000130000001300000013000000E2
|
||||
:1002D00013000000130000001300000013000000D2
|
||||
:1002E00013000000130000001300000013000000C2
|
||||
:1002F00013000000130000001300000013000000B2
|
||||
:1003000013000000130000001300000013000000A1
|
||||
:100310001300000013000000130000001300000091
|
||||
:100320001300000013000000130000001300000081
|
||||
:100330001300000013000000130000001300000071
|
||||
:100340001300000013000000130000001300000061
|
||||
:100350001300000013000000130000001300000051
|
||||
:100360001300000013000000130000001300000041
|
||||
:100370001300000013000000130000001300000031
|
||||
:100380001300000013000000130000001300000021
|
||||
:100390001300000013000000130000001300000011
|
||||
:1003A0001300000013000000130000001300000001
|
||||
:1003B00013000000130000001300000013000000F1
|
||||
:1003C00013000000130000001300000013000000E1
|
||||
:1003D00013000000130000001300000013000000D1
|
||||
:1003E00013000000130000001300000013000000C1
|
||||
:1003F00013000000130000001300000013000000B1
|
||||
:1004000013000000130000001300000013000000A0
|
||||
:100410001300000013000000130000001300000090
|
||||
:100420001300000013000000130000001300000080
|
||||
:100430001300000013000000130000001300000070
|
||||
:100440001300000013000000130000001300000060
|
||||
:100450001300000013000000130000001300000050
|
||||
:100460001300000013000000130000001300000040
|
||||
:100470001300000013000000130000001300000030
|
||||
:100480001300000013000000130000001300000020
|
||||
:100490001300000013000000130000001300000010
|
||||
:1004A0001300000013000000130000001300000000
|
||||
:1004B00013000000130000001300000013000000F0
|
||||
:1004C00013000000130000001300000013000000E0
|
||||
:1004D00013000000130000001300000013000000D0
|
||||
:1004E00013000000130000001300000013000000C0
|
||||
:1004F00013000000130000001300000013000000B0
|
||||
:10050000130000001300000013000000130000009F
|
||||
:10051000130000001300000013000000130000008F
|
||||
:10052000130000001300000013000000130000007F
|
||||
:10053000130000001300000013000000130000006F
|
||||
:10054000130000001300000013000000130000005F
|
||||
:10055000130000001300000013000000130000004F
|
||||
:10056000130000001300000013000000130000003F
|
||||
:10057000130000001300000013000000130000002F
|
||||
:10058000130000001300000013000000130000001F
|
||||
:10059000130000001300000013000000130000000F
|
||||
:1005A00013000000130000001300000013000000FF
|
||||
:1005B00013000000130000001300000013000000EF
|
||||
:1005C00013000000130000001300000013000000DF
|
||||
:1005D00013000000130000001300000013000000CF
|
||||
:1005E00013000000130000001300000013000000BF
|
||||
:1005F00013000000130000001300000013000000AF
|
||||
:10060000130000001300000013000000130000009E
|
||||
:10061000130000001300000013000000130000008E
|
||||
:10062000130000001300000013000000130000007E
|
||||
:10063000130000001300000013000000130000006E
|
||||
:10064000130000001300000013000000130000005E
|
||||
:10065000130000001300000013000000130000004E
|
||||
:10066000130000001300000013000000130000003E
|
||||
:10067000130000001300000013000000130000002E
|
||||
:10068000130000001300000013000000130000001E
|
||||
:10069000130000001300000013000000130000000E
|
||||
:1006A00013000000130000001300000013000000FE
|
||||
:1006B00013000000130000001300000013000000EE
|
||||
:1006C00013000000130000001300000013000000DE
|
||||
:1006D00013000000130000001300000013000000CE
|
||||
:1006E00013000000130000001300000013000000BE
|
||||
:1006F00013000000130000001300000013000000AE
|
||||
:10070000130000001300000013000000130000009D
|
||||
:10071000130000001300000013000000130000008D
|
||||
:10072000130000001300000013000000130000007D
|
||||
:10073000130000001300000013000000130000006D
|
||||
:10074000130000001300000013000000130000005D
|
||||
:10075000130000001300000013000000130000004D
|
||||
:10076000130000001300000013000000130000003D
|
||||
:10077000130000001300000013000000130000002D
|
||||
:10078000130000001300000013000000130000001D
|
||||
:10079000130000001300000013000000130000000D
|
||||
:1007A00013000000130000001300000013000000FD
|
||||
:1007B00013000000130000001300000013000000ED
|
||||
:1007C00013000000130000001300000013000000DD
|
||||
:1007D00013000000130000001300000013000000CD
|
||||
:1007E00013000000130000001300000013000000BD
|
||||
:1007F00013000000130000001300000013000000AD
|
||||
:10080000130000001300000013000000130000009C
|
||||
:10081000130000001300000013000000130000008C
|
||||
:10082000130000001300000013000000130000007C
|
||||
:10083000130000001300000013000000130000006C
|
||||
:10084000130000001300000013000000130000005C
|
||||
:10085000130000001300000013000000130000004C
|
||||
:10086000130000001300000013000000130000003C
|
||||
:10087000130000001300000013000000130000002C
|
||||
:10088000130000001300000013000000130000001C
|
||||
:10089000130000001300000013000000130000000C
|
||||
:1008A00013000000130000001300000013000000FC
|
||||
:1008B00013000000130000001300000013000000EC
|
||||
:1008C00013000000130000001300000013000000DC
|
||||
:1008D00013000000130000001300000013000000CC
|
||||
:1008E00013000000130000001300000013000000BC
|
||||
:1008F00013000000130000001300000013000000AC
|
||||
:10090000130000001300000013000000130000009B
|
||||
:10091000130000001300000013000000130000008B
|
||||
:10092000130000001300000013000000130000007B
|
||||
:10093000130000001300000013000000130000006B
|
||||
:10094000130000001300000013000000130000005B
|
||||
:10095000130000001300000013000000130000004B
|
||||
:10096000130000001300000013000000130000003B
|
||||
:10097000130000001300000013000000130000002B
|
||||
:10098000130000001300000013000000130000001B
|
||||
:10099000130000001300000013000000130000000B
|
||||
:1009A00013000000130000001300000013000000FB
|
||||
:1009B00013000000130000001300000013000000EB
|
||||
:1009C00013000000130000001300000013000000DB
|
||||
:1009D00013000000130000001300000013000000CB
|
||||
:1009E00013000000130000001300000013000000BB
|
||||
:1009F00013000000130000001300000013000000AB
|
||||
:100A0000130000001300000013000000130000009A
|
||||
:100A1000130000001300000013000000130000008A
|
||||
:100A2000130000001300000013000000130000007A
|
||||
:100A3000130000001300000013000000130000006A
|
||||
:100A4000130000001300000013000000130000005A
|
||||
:100A5000130000001300000013000000130000004A
|
||||
:100A6000130000001300000013000000130000003A
|
||||
:100A7000130000001300000013000000130000002A
|
||||
:100A8000130000001300000013000000130000001A
|
||||
:100A9000130000001300000013000000130000000A
|
||||
:100AA00013000000130000001300000013000000FA
|
||||
:100AB00013000000130000001300000013000000EA
|
||||
:100AC00013000000130000001300000013000000DA
|
||||
:100AD00013000000130000001300000013000000CA
|
||||
:100AE00013000000130000001300000013000000BA
|
||||
:100AF00013000000130000001300000013000000AA
|
||||
:100B00001300000013000000130000001300000099
|
||||
:100B10001300000013000000130000001300000089
|
||||
:100B20001300000013000000130000001300000079
|
||||
:100B30001300000013000000130000001300000069
|
||||
:100B40001300000013000000130000001300000059
|
||||
:100B50001300000013000000130000001300000049
|
||||
:100B60001300000013000000130000001300000039
|
||||
:100B70001300000013000000130000001300000029
|
||||
:100B80001300000013000000130000001300000019
|
||||
:100B90001300000013000000130000001300000009
|
||||
:100BA00013000000130000001300000013000000F9
|
||||
:100BB00013000000130000001300000013000000E9
|
||||
:100BC00013000000130000001300000013000000D9
|
||||
:100BD00013000000130000001300000013000000C9
|
||||
:100BE00013000000130000001300000013000000B9
|
||||
:100BF00013000000130000001300000013000000A9
|
||||
:100C00001300000013000000130000001300000098
|
||||
:100C10001300000013000000130000001300000088
|
||||
:100C20001300000013000000130000001300000078
|
||||
:100C30001300000013000000130000001300000068
|
||||
:100C40001300000013000000130000001300000058
|
||||
:100C50001300000013000000130000001300000048
|
||||
:100C60001300000013000000130000001300000038
|
||||
:100C70001300000013000000130000001300000028
|
||||
:100C80001300000013000000130000001300000018
|
||||
:100C90001300000013000000130000001300000008
|
||||
:100CA00013000000130000001300000013000000F8
|
||||
:100CB00013000000130000001300000013000000E8
|
||||
:100CC00013000000130000001300000013000000D8
|
||||
:100CD00013000000130000001300000013000000C8
|
||||
:100CE00013000000130000001300000013000000B8
|
||||
:100CF00013000000130000001300000013000000A8
|
||||
:100D00001300000013000000130000001300000097
|
||||
:100D10001300000013000000130000001300000087
|
||||
:100D20001300000013000000130000001300000077
|
||||
:100D30001300000013000000130000001300000067
|
||||
:100D40001300000013000000130000001300000057
|
||||
:100D50001300000013000000130000001300000047
|
||||
:100D60001300000013000000130000001300000037
|
||||
:100D70001300000013000000130000001300000027
|
||||
:100D80001300000013000000130000001300000017
|
||||
:100D90001300000013000000130000001300000007
|
||||
:100DA00013000000130000001300000013000000F7
|
||||
:100DB00013000000130000001300000013000000E7
|
||||
:100DC00013000000130000001300000013000000D7
|
||||
:100DD00013000000130000001300000013000000C7
|
||||
:100DE00013000000130000001300000013000000B7
|
||||
:100DF00013000000130000001300000013000000A7
|
||||
:100E00001300000013000000130000001300000096
|
||||
:100E10001300000013000000130000001300000086
|
||||
:100E20001300000013000000130000001300000076
|
||||
:100E30001300000013000000130000001300000066
|
||||
:100E40001300000013000000130000001300000056
|
||||
:100E50001300000013000000130000001300000046
|
||||
:100E60001300000013000000130000001300000036
|
||||
:100E70001300000013000000130000001300000026
|
||||
:100E80001300000013000000130000001300000016
|
||||
:100E90001300000013000000130000001300000006
|
||||
:100EA00013000000130000001300000013000000F6
|
||||
:100EB00013000000130000001300000013000000E6
|
||||
:100EC00013000000130000001300000013000000D6
|
||||
:100ED00013000000130000001300000013000000C6
|
||||
:100EE00013000000130000001300000013000000B6
|
||||
:100EF00013000000130000001300000013000000A6
|
||||
:100F00001300000013000000130000001300000095
|
||||
:100F10001300000013000000130000001300000085
|
||||
:100F20001300000013000000130000001300000075
|
||||
:100F30001300000013000000130000001300000065
|
||||
:100F40001300000013000000130000001300000055
|
||||
:100F50001300000013000000130000001300000045
|
||||
:100F60001300000013000000130000001300000035
|
||||
:100F70001300000013000000130000001300000025
|
||||
:100F80001300000013000000130000001300000015
|
||||
:100F90001300000013000000130000001300000005
|
||||
:100FA00013000000130000001300000013000000F5
|
||||
:100FB00013000000130000001300000013000000E5
|
||||
:100FC00013000000130000001300000013000000D5
|
||||
:100FD00013000000130000001300000013000000C5
|
||||
:100FE00013000000130000001300000013000000B5
|
||||
:100FF00013000000130000001300000013000000A5
|
||||
:1010000000000000000000000000000000000000E0
|
||||
:1010100000000000000000000000000000000000D0
|
||||
:1010200000000000000000000000000000000000C0
|
||||
:1010300000000000000000000000000000000000B0
|
||||
:1010400000000000000000000000000000000000A0
|
||||
:101050000000000000000000000000000000000090
|
||||
:101060000000000000000000000000000000000080
|
||||
:101070000000000000000000000000000000000070
|
||||
:101080000000000000000000000000000000000060
|
||||
:101090000000000000000000000000000000000050
|
||||
:1010A0000000000000000000000000000000000040
|
||||
:1010B0000000000000000000000000000000000030
|
||||
:1010C0000000000000000000000000000000000020
|
||||
:1010D0000000000000000000000000000000000010
|
||||
:1010E0000000000000000000000000000000000000
|
||||
:1010F00000000000000000000000000000000000F0
|
||||
:1011000000000000000000000000000000000000DF
|
||||
:1011100000000000000000000000000000000000CF
|
||||
:1011200000000000000000000000000000000000BF
|
||||
:1011300000000000000000000000000000000000AF
|
||||
:10114000000000000000000000000000000000009F
|
||||
:10115000000000000000000000000000000000008F
|
||||
:10116000000000000000000000000000000000007F
|
||||
:10117000000000000000000000000000000000006F
|
||||
:10118000000000000000000000000000000000005F
|
||||
:10119000000000000000000000000000000000004F
|
||||
:1011A000000000000000000000000000000000003F
|
||||
:1011B000000000000000000000000000000000002F
|
||||
:1011C000000000000000000000000000000000001F
|
||||
:1011D000000000000000000000000000000000000F
|
||||
:1011E00000000000000000000000000000000000FF
|
||||
:1011F00000000000000000000000000000000000EF
|
||||
:1012000000000000000000000000000000000000DE
|
||||
:1012100000000000000000000000000000000000CE
|
||||
:1012200000000000000000000000000000000000BE
|
||||
:1012300000000000000000000000000000000000AE
|
||||
:10124000000000000000000000000000000000009E
|
||||
:10125000000000000000000000000000000000008E
|
||||
:10126000000000000000000000000000000000007E
|
||||
:10127000000000000000000000000000000000006E
|
||||
:10128000000000000000000000000000000000005E
|
||||
:10129000000000000000000000000000000000004E
|
||||
:1012A000000000000000000000000000000000003E
|
||||
:1012B000000000000000000000000000000000002E
|
||||
:1012C000000000000000000000000000000000001E
|
||||
:1012D000000000000000000000000000000000000E
|
||||
:1012E00000000000000000000000000000000000FE
|
||||
:1012F00000000000000000000000000000000000EE
|
||||
:1013000000000000000000000000000000000000DD
|
||||
:1013100000000000000000000000000000000000CD
|
||||
:1013200000000000000000000000000000000000BD
|
||||
:1013300000000000000000000000000000000000AD
|
||||
:10134000000000000000000000000000000000009D
|
||||
:10135000000000000000000000000000000000008D
|
||||
:10136000000000000000000000000000000000007D
|
||||
:10137000000000000000000000000000000000006D
|
||||
:10138000000000000000000000000000000000005D
|
||||
:10139000000000000000000000000000000000004D
|
||||
:1013A000000000000000000000000000000000003D
|
||||
:1013B000000000000000000000000000000000002D
|
||||
:1013C000000000000000000000000000000000001D
|
||||
:1013D000000000000000000000000000000000000D
|
||||
:1013E00000000000000000000000000000000000FD
|
||||
:1013F00000000000000000000000000000000000ED
|
||||
:1014000000000000000000000000000000000000DC
|
||||
:1014100000000000000000000000000000000000CC
|
||||
:1014200000000000000000000000000000000000BC
|
||||
:1014300000000000000000000000000000000000AC
|
||||
:10144000000000000000000000000000000000009C
|
||||
:10145000000000000000000000000000000000008C
|
||||
:10146000000000000000000000000000000000007C
|
||||
:10147000000000000000000000000000000000006C
|
||||
:10148000000000000000000000000000000000005C
|
||||
:10149000000000000000000000000000000000004C
|
||||
:1014A000000000000000000000000000000000003C
|
||||
:1014B000000000000000000000000000000000002C
|
||||
:1014C000000000000000000000000000000000001C
|
||||
:1014D000000000000000000000000000000000000C
|
||||
:1014E00000000000000000000000000000000000FC
|
||||
:1014F00000000000000000000000000000000000EC
|
||||
:1015000000000000000000000000000000000000DB
|
||||
:1015100000000000000000000000000000000000CB
|
||||
:1015200000000000000000000000000000000000BB
|
||||
:1015300000000000000000000000000000000000AB
|
||||
:10154000000000000000000000000000000000009B
|
||||
:10155000000000000000000000000000000000008B
|
||||
:10156000000000000000000000000000000000007B
|
||||
:10157000000000000000000000000000000000006B
|
||||
:10158000000000000000000000000000000000005B
|
||||
:10159000000000000000000000000000000000004B
|
||||
:1015A000000000000000000000000000000000003B
|
||||
:1015B000000000000000000000000000000000002B
|
||||
:1015C000000000000000000000000000000000001B
|
||||
:1015D000000000000000000000000000000000000B
|
||||
:1015E00000000000000000000000000000000000FB
|
||||
:1015F00000000000000000000000000000000000EB
|
||||
:1016000000000000000000000000000000000000DA
|
||||
:1016100000000000000000000000000000000000CA
|
||||
:1016200000000000000000000000000000000000BA
|
||||
:1016300000000000000000000000000000000000AA
|
||||
:10164000000000000000000000000000000000009A
|
||||
:10165000000000000000000000000000000000008A
|
||||
:10166000000000000000000000000000000000007A
|
||||
:10167000000000000000000000000000000000006A
|
||||
:10168000000000000000000000000000000000005A
|
||||
:10169000000000000000000000000000000000004A
|
||||
:1016A000000000000000000000000000000000003A
|
||||
:1016B000000000000000000000000000000000002A
|
||||
:1016C000000000000000000000000000000000001A
|
||||
:1016D000000000000000000000000000000000000A
|
||||
:1016E00000000000000000000000000000000000FA
|
||||
:1016F00000000000000000000000000000000000EA
|
||||
:1017000000000000000000000000000000000000D9
|
||||
:1017100000000000000000000000000000000000C9
|
||||
:1017200000000000000000000000000000000000B9
|
||||
:1017300000000000000000000000000000000000A9
|
||||
:101740000000000000000000000000000000000099
|
||||
:101750000000000000000000000000000000000089
|
||||
:101760000000000000000000000000000000000079
|
||||
:101770000000000000000000000000000000000069
|
||||
:101780000000000000000000000000000000000059
|
||||
:101790000000000000000000000000000000000049
|
||||
:1017A0000000000000000000000000000000000039
|
||||
:1017B0000000000000000000000000000000000029
|
||||
:1017C0000000000000000000000000000000000019
|
||||
:1017D0000000000000000000000000000000000009
|
||||
:1017E00000000000000000000000000000000000F9
|
||||
:1017F00000000000000000000000000000000000E9
|
||||
:1018000000000000000000000000000000000000D8
|
||||
:1018100000000000000000000000000000000000C8
|
||||
:1018200000000000000000000000000000000000B8
|
||||
:1018300000000000000000000000000000000000A8
|
||||
:101840000000000000000000000000000000000098
|
||||
:101850000000000000000000000000000000000088
|
||||
:101860000000000000000000000000000000000078
|
||||
:101870000000000000000000000000000000000068
|
||||
:101880000000000000000000000000000000000058
|
||||
:101890000000000000000000000000000000000048
|
||||
:1018A0000000000000000000000000000000000038
|
||||
:1018B0000000000000000000000000000000000028
|
||||
:1018C0000000000000000000000000000000000018
|
||||
:1018D0000000000000000000000000000000000008
|
||||
:1018E00000000000000000000000000000000000F8
|
||||
:1018F00000000000000000000000000000000000E8
|
||||
:1019000000000000000000000000000000000000D7
|
||||
:1019100000000000000000000000000000000000C7
|
||||
:1019200000000000000000000000000000000000B7
|
||||
:1019300000000000000000000000000000000000A7
|
||||
:101940000000000000000000000000000000000097
|
||||
:101950000000000000000000000000000000000087
|
||||
:101960000000000000000000000000000000000077
|
||||
:101970000000000000000000000000000000000067
|
||||
:101980000000000000000000000000000000000057
|
||||
:101990000000000000000000000000000000000047
|
||||
:1019A0000000000000000000000000000000000037
|
||||
:1019B0000000000000000000000000000000000027
|
||||
:1019C0000000000000000000000000000000000017
|
||||
:1019D0000000000000000000000000000000000007
|
||||
:1019E00000000000000000000000000000000000F7
|
||||
:1019F00000000000000000000000000000000000E7
|
||||
:101A000000000000000000000000000000000000D6
|
||||
:101A100000000000000000000000000000000000C6
|
||||
:101A200000000000000000000000000000000000B6
|
||||
:101A300000000000000000000000000000000000A6
|
||||
:101A40000000000000000000000000000000000096
|
||||
:101A50000000000000000000000000000000000086
|
||||
:101A60000000000000000000000000000000000076
|
||||
:101A70000000000000000000000000000000000066
|
||||
:101A80000000000000000000000000000000000056
|
||||
:101A90000000000000000000000000000000000046
|
||||
:101AA0000000000000000000000000000000000036
|
||||
:101AB0000000000000000000000000000000000026
|
||||
:101AC0000000000000000000000000000000000016
|
||||
:101AD0000000000000000000000000000000000006
|
||||
:101AE00000000000000000000000000000000000F6
|
||||
:101AF00000000000000000000000000000000000E6
|
||||
:101B000000000000000000000000000000000000D5
|
||||
:101B100000000000000000000000000000000000C5
|
||||
:101B200000000000000000000000000000000000B5
|
||||
:101B300000000000000000000000000000000000A5
|
||||
:101B40000000000000000000000000000000000095
|
||||
:101B50000000000000000000000000000000000085
|
||||
:101B60000000000000000000000000000000000075
|
||||
:101B70000000000000000000000000000000000065
|
||||
:101B80000000000000000000000000000000000055
|
||||
:101B90000000000000000000000000000000000045
|
||||
:101BA0000000000000000000000000000000000035
|
||||
:101BB0000000000000000000000000000000000025
|
||||
:101BC0000000000000000000000000000000000015
|
||||
:101BD0000000000000000000000000000000000005
|
||||
:101BE00000000000000000000000000000000000F5
|
||||
:101BF00000000000000000000000000000000000E5
|
||||
:101C000000000000000000000000000000000000D4
|
||||
:101C100000000000000000000000000000000000C4
|
||||
:101C200000000000000000000000000000000000B4
|
||||
:101C300000000000000000000000000000000000A4
|
||||
:101C40000000000000000000000000000000000094
|
||||
:101C50000000000000000000000000000000000084
|
||||
:101C60000000000000000000000000000000000074
|
||||
:101C70000000000000000000000000000000000064
|
||||
:101C80000000000000000000000000000000000054
|
||||
:101C90000000000000000000000000000000000044
|
||||
:101CA0000000000000000000000000000000000034
|
||||
:101CB0000000000000000000000000000000000024
|
||||
:101CC0000000000000000000000000000000000014
|
||||
:101CD0000000000000000000000000000000000004
|
||||
:101CE00000000000000000000000000000000000F4
|
||||
:101CF00000000000000000000000000000000000E4
|
||||
:101D000000000000000000000000000000000000D3
|
||||
:101D100000000000000000000000000000000000C3
|
||||
:101D200000000000000000000000000000000000B3
|
||||
:101D300000000000000000000000000000000000A3
|
||||
:101D40000000000000000000000000000000000093
|
||||
:101D50000000000000000000000000000000000083
|
||||
:101D60000000000000000000000000000000000073
|
||||
:101D70000000000000000000000000000000000063
|
||||
:101D80000000000000000000000000000000000053
|
||||
:101D90000000000000000000000000000000000043
|
||||
:101DA0000000000000000000000000000000000033
|
||||
:101DB0000000000000000000000000000000000023
|
||||
:101DC0000000000000000000000000000000000013
|
||||
:101DD0000000000000000000000000000000000003
|
||||
:101DE00000000000000000000000000000000000F3
|
||||
:101DF00000000000000000000000000000000000E3
|
||||
:101E000000000000000000000000000000000000D2
|
||||
:101E100000000000000000000000000000000000C2
|
||||
:101E200000000000000000000000000000000000B2
|
||||
:101E300000000000000000000000000000000000A2
|
||||
:101E40000000000000000000000000000000000092
|
||||
:101E50000000000000000000000000000000000082
|
||||
:101E60000000000000000000000000000000000072
|
||||
:101E70000000000000000000000000000000000062
|
||||
:101E80000000000000000000000000000000000052
|
||||
:101E90000000000000000000000000000000000042
|
||||
:101EA0000000000000000000000000000000000032
|
||||
:101EB0000000000000000000000000000000000022
|
||||
:101EC0000000000000000000000000000000000012
|
||||
:101ED0000000000000000000000000000000000002
|
||||
:101EE00000000000000000000000000000000000F2
|
||||
:101EF00000000000000000000000000000000000E2
|
||||
:101F000000000000000000000000000000000000D1
|
||||
:101F100000000000000000000000000000000000C1
|
||||
:101F200000000000000000000000000000000000B1
|
||||
:101F300000000000000000000000000000000000A1
|
||||
:101F40000000000000000000000000000000000091
|
||||
:101F50000000000000000000000000000000000081
|
||||
:101F60000000000000000000000000000000000071
|
||||
:101F70000000000000000000000000000000000061
|
||||
:101F80000000000000000000000000000000000051
|
||||
:101F90000000000000000000000000000000000041
|
||||
:101FA0000000000000000000000000000000000031
|
||||
:101FB0000000000000000000000000000000000021
|
||||
:101FC0000000000000000000000000000000000011
|
||||
:101FD0000000000000000000000000000000000001
|
||||
:101FE00000000000000000000000000000000000F1
|
||||
:101FF00000000000000000000000000000009385C9
|
||||
:102000001500930EB02993012000639FD52337114B
|
||||
:10201000000013014123E81FB71E0000938E0E63DA
|
||||
:10202000930130006312D5237D610100B71E0000CB
|
||||
:10203000938E4E42930140006318D121017101003B
|
||||
:10204000B71E0000938E4E2293015000631ED11FD5
|
||||
:1020500097E5FFFF9385850BC8410505C8C1D041B1
|
||||
:10206000B7CEDCFE938E9EA993016000631ED61D41
|
||||
:102070001365100041150100930E10FF93018000BD
|
||||
:102080006314D51D93671000C1570100930E00FF24
|
||||
:1020900093019000639AD71B05743184930E10FE50
|
||||
:1020A0009301B0006312D41B05743180B70E100089
|
||||
:1020B000938E1EFE9301C0006318D41979543D9885
|
||||
:1020C000930EE0FE9301E0006310D419D14419454A
|
||||
:1020D000898C0100930EE0009301F0006396D41701
|
||||
:1020E000D1441945A98C0100930E200193010001F0
|
||||
:1020F000639CD415D1441945C98C0100930E60012D
|
||||
:10210000930110016392D415D1441945E98C010063
|
||||
:10211000930E4000930120016398D41337140000FC
|
||||
:102120001304442312040100B72E0100938E0E34D1
|
||||
:1021300093015001631AD411814011A011A011A084
|
||||
:1021400021A20100930E00009301E001639ED00FD5
|
||||
:10215000014511C111A011A0C5A80100930E0000F6
|
||||
:102160009301F0016312D00F054511E111A011A0F8
|
||||
:10217000E1A80100930E0000930100026316D00D48
|
||||
:10218000054511C111A0C9A0930E000093011002D2
|
||||
:10219000631CD00B014511E111A07DA0930E00003E
|
||||
:1021A000930120026312D00B970200009382E20099
|
||||
:1021B0008140828211A011A041A80100930E00006D
|
||||
:1021C000930130026392D009970200009382E200EB
|
||||
:1021D0008140829211A011A085A8B38050400100D7
|
||||
:1021E000930EE0FF930140026390D0079702000036
|
||||
:1021F0009382E2008140112011A011A0B1A0B38010
|
||||
:1022000050400100930EE0FF93015002639ED00303
|
||||
:1022100017E1FFFF130181EF324505052AC632465B
|
||||
:10222000B7CEDCFE938E9EA993018002631ED60179
|
||||
:1022300013053012AA82AA92930E60249301A00281
|
||||
:102240006394D201631C30000F00F00F6380010023
|
||||
:102250009391110093E11100730000000F00F00F43
|
||||
:102260009301100073000000731000C00000000014
|
||||
:10227000000000000000000000000000000000005E
|
||||
:10228000000000000000000000000000000000004E
|
||||
:10229000000000000000000000000000000000003E
|
||||
:1022A000000000000000000000000000000000002E
|
||||
:1022B000000000000000000000000000000000001E
|
||||
:1022C000000000000000000000000000000000000E
|
||||
:1022D00000000000000000000000000000000000FE
|
||||
:1022E00000000000000000000000000000000000EE
|
||||
:1022F00000000000000000000000000000000000DE
|
||||
:1023000000000000000000000000000000000000CD
|
||||
:1023100000000000000000000000000000000000BD
|
||||
:1023200000000000000000000000000000000000AD
|
||||
:10233000000000000000000000000000000000009D
|
||||
:10234000000000000000000000000000000000008D
|
||||
:10235000000000000000000000000000000000007D
|
||||
:10236000000000000000000000000000000000006D
|
||||
:10237000000000000000000000000000000000005D
|
||||
:10238000000000000000000000000000000000004D
|
||||
:10239000000000000000000000000000000000003D
|
||||
:1023A000000000000000000000000000000000002D
|
||||
:1023B000000000000000000000000000000000001D
|
||||
:1023C000000000000000000000000000000000000D
|
||||
:1023D00000000000000000000000000000000000FD
|
||||
:1023E00000000000000000000000000000000000ED
|
||||
:1023F00000000000000000000000000000000000DD
|
||||
:1024000000000000000000000000000000000000CC
|
||||
:1024100000000000000000000000000000000000BC
|
||||
:1024200000000000000000000000000000000000AC
|
||||
:10243000000000000000000000000000000000009C
|
||||
:10244000000000000000000000000000000000008C
|
||||
:10245000000000000000000000000000000000007C
|
||||
:10246000000000000000000000000000000000006C
|
||||
:10247000000000000000000000000000000000005C
|
||||
:10248000000000000000000000000000000000004C
|
||||
:10249000000000000000000000000000000000003C
|
||||
:1024A000000000000000000000000000000000002C
|
||||
:1024B000000000000000000000000000000000001C
|
||||
:1024C000000000000000000000000000000000000C
|
||||
:1024D00000000000000000000000000000000000FC
|
||||
:1024E00000000000000000000000000000000000EC
|
||||
:1024F00000000000000000000000000000000000DC
|
||||
:1025000000000000000000000000000000000000CB
|
||||
:1025100000000000000000000000000000000000BB
|
||||
:1025200000000000000000000000000000000000AB
|
||||
:10253000000000000000000000000000000000009B
|
||||
:10254000000000000000000000000000000000008B
|
||||
:10255000000000000000000000000000000000007B
|
||||
:10256000000000000000000000000000000000006B
|
||||
:10257000000000000000000000000000000000005B
|
||||
:10258000000000000000000000000000000000004B
|
||||
:10259000000000000000000000000000000000003B
|
||||
:1025A000000000000000000000000000000000002B
|
||||
:1025B000000000000000000000000000000000001B
|
||||
:1025C000000000000000000000000000000000000B
|
||||
:1025D00000000000000000000000000000000000FB
|
||||
:1025E00000000000000000000000000000000000EB
|
||||
:1025F00000000000000000000000000000000000DB
|
||||
:1026000000000000000000000000000000000000CA
|
||||
:1026100000000000000000000000000000000000BA
|
||||
:1026200000000000000000000000000000000000AA
|
||||
:10263000000000000000000000000000000000009A
|
||||
:10264000000000000000000000000000000000008A
|
||||
:10265000000000000000000000000000000000007A
|
||||
:10266000000000000000000000000000000000006A
|
||||
:10267000000000000000000000000000000000005A
|
||||
:10268000000000000000000000000000000000004A
|
||||
:10269000000000000000000000000000000000003A
|
||||
:1026A000000000000000000000000000000000002A
|
||||
:1026B000000000000000000000000000000000001A
|
||||
:1026C000000000000000000000000000000000000A
|
||||
:1026D00000000000000000000000000000000000FA
|
||||
:1026E00000000000000000000000000000000000EA
|
||||
:1026F00000000000000000000000000000000000DA
|
||||
:1027000000000000000000000000000000000000C9
|
||||
:1027100000000000000000000000000000000000B9
|
||||
:1027200000000000000000000000000000000000A9
|
||||
:102730000000000000000000000000000000000099
|
||||
:102740000000000000000000000000000000000089
|
||||
:102750000000000000000000000000000000000079
|
||||
:102760000000000000000000000000000000000069
|
||||
:102770000000000000000000000000000000000059
|
||||
:102780000000000000000000000000000000000049
|
||||
:102790000000000000000000000000000000000039
|
||||
:1027A0000000000000000000000000000000000029
|
||||
:1027B0000000000000000000000000000000000019
|
||||
:1027C0000000000000000000000000000000000009
|
||||
:1027D00000000000000000000000000000000000F9
|
||||
:1027E00000000000000000000000000000000000E9
|
||||
:1027F00000000000000000000000000000000000D9
|
||||
:1028000000000000000000000000000000000000C8
|
||||
:1028100000000000000000000000000000000000B8
|
||||
:1028200000000000000000000000000000000000A8
|
||||
:102830000000000000000000000000000000000098
|
||||
:102840000000000000000000000000000000000088
|
||||
:102850000000000000000000000000000000000078
|
||||
:102860000000000000000000000000000000000068
|
||||
:102870000000000000000000000000000000000058
|
||||
:102880000000000000000000000000000000000048
|
||||
:102890000000000000000000000000000000000038
|
||||
:1028A0000000000000000000000000000000000028
|
||||
:1028B0000000000000000000000000000000000018
|
||||
:1028C0000000000000000000000000000000000008
|
||||
:1028D00000000000000000000000000000000000F8
|
||||
:1028E00000000000000000000000000000000000E8
|
||||
:1028F00000000000000000000000000000000000D8
|
||||
:1029000000000000000000000000000000000000C7
|
||||
:1029100000000000000000000000000000000000B7
|
||||
:1029200000000000000000000000000000000000A7
|
||||
:102930000000000000000000000000000000000097
|
||||
:102940000000000000000000000000000000000087
|
||||
:102950000000000000000000000000000000000077
|
||||
:102960000000000000000000000000000000000067
|
||||
:102970000000000000000000000000000000000057
|
||||
:102980000000000000000000000000000000000047
|
||||
:102990000000000000000000000000000000000037
|
||||
:1029A0000000000000000000000000000000000027
|
||||
:1029B0000000000000000000000000000000000017
|
||||
:1029C0000000000000000000000000000000000007
|
||||
:1029D00000000000000000000000000000000000F7
|
||||
:1029E00000000000000000000000000000000000E7
|
||||
:1029F00000000000000000000000000000000000D7
|
||||
:102A000000000000000000000000000000000000C6
|
||||
:102A100000000000000000000000000000000000B6
|
||||
:102A200000000000000000000000000000000000A6
|
||||
:102A30000000000000000000000000000000000096
|
||||
:102A40000000000000000000000000000000000086
|
||||
:102A50000000000000000000000000000000000076
|
||||
:102A60000000000000000000000000000000000066
|
||||
:102A70000000000000000000000000000000000056
|
||||
:102A80000000000000000000000000000000000046
|
||||
:102A90000000000000000000000000000000000036
|
||||
:102AA0000000000000000000000000000000000026
|
||||
:102AB0000000000000000000000000000000000016
|
||||
:102AC0000000000000000000000000000000000006
|
||||
:102AD00000000000000000000000000000000000F6
|
||||
:102AE00000000000000000000000000000000000E6
|
||||
:102AF00000000000000000000000000000000000D6
|
||||
:102B000000000000000000000000000000000000C5
|
||||
:102B100000000000000000000000000000000000B5
|
||||
:102B200000000000000000000000000000000000A5
|
||||
:102B30000000000000000000000000000000000095
|
||||
:102B40000000000000000000000000000000000085
|
||||
:102B50000000000000000000000000000000000075
|
||||
:102B60000000000000000000000000000000000065
|
||||
:102B70000000000000000000000000000000000055
|
||||
:102B80000000000000000000000000000000000045
|
||||
:102B90000000000000000000000000000000000035
|
||||
:102BA0000000000000000000000000000000000025
|
||||
:102BB0000000000000000000000000000000000015
|
||||
:102BC0000000000000000000000000000000000005
|
||||
:102BD00000000000000000000000000000000000F5
|
||||
:102BE00000000000000000000000000000000000E5
|
||||
:102BF00000000000000000000000000000000000D5
|
||||
:102C000000000000000000000000000000000000C4
|
||||
:102C100000000000000000000000000000000000B4
|
||||
:102C200000000000000000000000000000000000A4
|
||||
:102C30000000000000000000000000000000000094
|
||||
:102C40000000000000000000000000000000000084
|
||||
:102C50000000000000000000000000000000000074
|
||||
:102C60000000000000000000000000000000000064
|
||||
:102C70000000000000000000000000000000000054
|
||||
:102C80000000000000000000000000000000000044
|
||||
:102C90000000000000000000000000000000000034
|
||||
:102CA0000000000000000000000000000000000024
|
||||
:102CB0000000000000000000000000000000000014
|
||||
:102CC0000000000000000000000000000000000004
|
||||
:102CD00000000000000000000000000000000000F4
|
||||
:102CE00000000000000000000000000000000000E4
|
||||
:102CF00000000000000000000000000000000000D4
|
||||
:102D000000000000000000000000000000000000C3
|
||||
:102D100000000000000000000000000000000000B3
|
||||
:102D200000000000000000000000000000000000A3
|
||||
:102D30000000000000000000000000000000000093
|
||||
:102D40000000000000000000000000000000000083
|
||||
:102D50000000000000000000000000000000000073
|
||||
:102D60000000000000000000000000000000000063
|
||||
:102D70000000000000000000000000000000000053
|
||||
:102D80000000000000000000000000000000000043
|
||||
:102D90000000000000000000000000000000000033
|
||||
:102DA0000000000000000000000000000000000023
|
||||
:102DB0000000000000000000000000000000000013
|
||||
:102DC0000000000000000000000000000000000003
|
||||
:102DD00000000000000000000000000000000000F3
|
||||
:102DE00000000000000000000000000000000000E3
|
||||
:102DF00000000000000000000000000000000000D3
|
||||
:102E000000000000000000000000000000000000C2
|
||||
:102E100000000000000000000000000000000000B2
|
||||
:102E200000000000000000000000000000000000A2
|
||||
:102E30000000000000000000000000000000000092
|
||||
:102E40000000000000000000000000000000000082
|
||||
:102E50000000000000000000000000000000000072
|
||||
:102E60000000000000000000000000000000000062
|
||||
:102E70000000000000000000000000000000000052
|
||||
:102E80000000000000000000000000000000000042
|
||||
:0A2E90000000000000000000000038
|
||||
:1030000000000000000000000000000000000000C0
|
||||
:1030100000000000000000000000000000000000B0
|
||||
:1030200000000000000000000000000000000000A0
|
||||
:103030000000000000000000000000000000000090
|
||||
:08304000000000000000000088
|
||||
:040000058000000077
|
||||
:00000001FF
|
Loading…
Reference in a new issue