
// -----------
// 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 lw instruction of the RISC-V RV32 extension for the misalign-lw 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.*); check hw_data_misaligned_support:=True ;def RVTEST_E = True;def TEST_CASE_1=True;",misalign-lw)

RVTEST_CASE(1,"//check ISA:=regex(.*E.*Zicsr.*); check hw_data_misaligned_support:=False; def rvtest_mtrap_routine=True ;def RVTEST_E = True;def TEST_CASE_1=True;",misalign-lw)

RVTEST_SIGBASE(x1,signature_x1_1)

inst_0:
// ea_align == 1, 
// opcode:lw op1:x14; dest:x15; immval:0x80; align:1
TEST_LOAD(x1,x2,0,x14,x15,0x80,0*XLEN/8,lw,1)

inst_1:
// ea_align == 2, 
// opcode:lw op1:x14; dest:x15; immval:0x400; align:2
TEST_LOAD(x1,x2,0,x14,x15,0x400,1*XLEN/8,lw,2)

inst_2:
// ea_align == 3, 
// opcode:lw op1:x14; dest:x15; immval:-0xa; align:3
TEST_LOAD(x1,x2,0,x14,x15,-0xa,2*XLEN/8,lw,3)
#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 3*((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
