
// -----------
// This file was generated by riscv_ctg (https://github.com/riscv-software-src/riscv-ctg)
// version   : 0.10.0
// timestamp : Mon Jul 17 05:17:29 2023 GMT
// usage     : riscv_ctg \
//                  -- cgf //                  --cgf /home/eman/riscof/riscv-ctg/sample_cgfs/dataset.cgf \
//                  --cgf /home/eman/riscof/riscv-ctg/sample_cgfs/rv32e_priv.cgf \
 \
//                  -- xlen 32  \
//                  --randomize \
// -----------
//
// -----------
// Copyright (c) 2020. RISC-V International. All rights reserved.
// SPDX-License-Identifier: BSD-3-Clause
// -----------
//
// This assembly file tests the jalr instruction of the RISC-V RV32 extension for the misalign2-jalr covergroup.
// 
#include "model_test.h"
#include "arch_test.h"
RVTEST_ISA("RV32E_Zicsr")

.section .text.init
.globl rvtest_entry_point
rvtest_entry_point:
RVMODEL_BOOT
RVTEST_CODE_BEGIN

#ifdef TEST_CASE_1

RVTEST_CASE(0,"//check ISA:=regex(.*E.*C.*) ;def RVTEST_E = True;def TEST_CASE_1=True;",misalign2-jalr)

RVTEST_CASE(1,"//check ISA:=regex(.*E.*Zicsr.*); check ISA:=regex(^[^C]+$); def rvtest_mtrap_routine=True ;def RVTEST_E = True;def TEST_CASE_1=True;",misalign2-jalr)

RVTEST_SIGBASE(x1,signature_x1_1)

inst_0:
// imm_val%2 == 0 and ea_align == 2, 
// opcode: jalr; op1:x14; dest:x15; immval:-0x8; align:2
TEST_JALR_OP(x2, x15, x14, -0x8, x1, 0*XLEN/8,2)

inst_1:
// imm_val%2 == 1 and ea_align == 2, 
// opcode: jalr; op1:x14; dest:x15; immval:0x555; align:2
TEST_JALR_OP(x2, x15, x14, 0x555, x1, 1*XLEN/8,2)
#endif


RVTEST_CODE_END
RVMODEL_HALT

RVTEST_DATA_BEGIN
.align 4
rvtest_data:
.word 0xbabecafe
.word 0xabecafeb
.word 0xbecafeba
.word 0xecafebab
RVTEST_DATA_END

RVMODEL_DATA_BEGIN
rvtest_sig_begin:
sig_begin_canary:
CANARY;

signature_x1_0:
    .fill 0*((XLEN/8)/4),4,0xdeadbeef


signature_x1_1:
    .fill 2*((XLEN/8)/4),4,0xdeadbeef

#ifdef rvtest_mtrap_routine
tsig_begin_canary:
CANARY;
mtrap_sigptr:
    .fill 64*XLEN/32,4,0xdeadbeef
tsig_end_canary:
CANARY;
#endif

#ifdef rvtest_gpr_save

gpr_save:
    .fill 32*XLEN/32,4,0xdeadbeef

#endif
sig_end_canary:
CANARY;
rvtest_sig_end:
RVMODEL_DATA_END
