mirror of
https://github.com/openhwgroup/cvw
synced 2025-02-11 06:05:49 +00:00
Merged PR538, delete unused tests
This commit is contained in:
commit
8552369687
@ -70,6 +70,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -70,6 +70,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -71,6 +71,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -70,6 +70,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -69,6 +69,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -70,6 +70,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -70,6 +70,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -70,6 +70,7 @@ localparam DCACHE_LINELENINBITS = 32'd512;
|
||||
localparam ICACHE_NUMWAYS = 32'd4;
|
||||
localparam ICACHE_WAYSIZEINBYTES = 32'd4096;
|
||||
localparam ICACHE_LINELENINBITS = 32'd512;
|
||||
localparam CACHE_SRAMLEN = 32'd128;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -38,6 +38,7 @@ localparam cvw_t P = '{
|
||||
ICACHE_NUMWAYS : ICACHE_NUMWAYS,
|
||||
ICACHE_WAYSIZEINBYTES : ICACHE_WAYSIZEINBYTES,
|
||||
ICACHE_LINELENINBITS : ICACHE_LINELENINBITS,
|
||||
CACHE_SRAMLEN : CACHE_SRAMLEN,
|
||||
IDIV_BITSPERCYCLE : IDIV_BITSPERCYCLE,
|
||||
IDIV_ON_FPU : IDIV_ON_FPU,
|
||||
PMP_ENTRIES : PMP_ENTRIES,
|
||||
|
@ -662,8 +662,11 @@ add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/STATUS_TW
|
||||
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/PrivilegeModeW
|
||||
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/wfi/WFICount
|
||||
add wave -noupdate -group wfi /testbench/dut/core/priv/priv/pmd/WFITimeoutM
|
||||
add wave -noupdate -expand -group testbench /testbench/DCacheFlushStart
|
||||
add wave -noupdate -expand -group testbench /testbench/TestComplete
|
||||
add wave -noupdate -expand -group testbench /testbench/CurrState
|
||||
TreeUpdate [SetDefaultTree]
|
||||
WaveRestoreCursors {{Cursor 4} {6586 ns} 1} {{Cursor 4} {372450 ns} 0} {{Cursor 3} {403021 ns} 1}
|
||||
WaveRestoreCursors {{Cursor 4} {6586 ns} 1} {{Cursor 4} {1405857 ns} 0} {{Cursor 3} {403021 ns} 1}
|
||||
quietly wave cursor active 2
|
||||
configure wave -namecolwidth 250
|
||||
configure wave -valuecolwidth 194
|
||||
@ -679,4 +682,4 @@ configure wave -griddelta 40
|
||||
configure wave -timeline 0
|
||||
configure wave -timelineunits ns
|
||||
update
|
||||
WaveRestoreZoom {372177 ns} {372771 ns}
|
||||
WaveRestoreZoom {0 ns} {16302587 ns}
|
||||
|
17
src/cache/cacheway.sv
vendored
17
src/cache/cacheway.sv
vendored
@ -129,21 +129,20 @@ module cacheway import cvw::*; #(parameter cvw_t P,
|
||||
|
||||
genvar words;
|
||||
|
||||
localparam SRAMLEN = 128; // *** make this a global parameter
|
||||
localparam NUMSRAM = LINELEN/SRAMLEN;
|
||||
localparam SRAMLENINBYTES = SRAMLEN/8;
|
||||
localparam NUMSRAM = LINELEN/P.CACHE_SRAMLEN;
|
||||
localparam SRAMLENINBYTES = P.CACHE_SRAMLEN/8;
|
||||
localparam LOGNUMSRAM = $clog2(NUMSRAM);
|
||||
|
||||
for(words = 0; words < NUMSRAM; words++) begin: word
|
||||
if (!READ_ONLY_CACHE) begin:wordram
|
||||
ram1p1rwbe #(.USE_SRAM(P.USE_SRAM), .DEPTH(NUMLINES), .WIDTH(SRAMLEN)) CacheDataMem(.clk, .ce(CacheEn), .addr(CacheSetData),
|
||||
.dout(ReadDataLine[SRAMLEN*(words+1)-1:SRAMLEN*words]),
|
||||
.din(LineWriteData[SRAMLEN*(words+1)-1:SRAMLEN*words]),
|
||||
ram1p1rwbe #(.USE_SRAM(P.USE_SRAM), .DEPTH(NUMLINES), .WIDTH(P.CACHE_SRAMLEN)) CacheDataMem(.clk, .ce(CacheEn), .addr(CacheSetData),
|
||||
.dout(ReadDataLine[P.CACHE_SRAMLEN*(words+1)-1:P.CACHE_SRAMLEN*words]),
|
||||
.din(LineWriteData[P.CACHE_SRAMLEN*(words+1)-1:P.CACHE_SRAMLEN*words]),
|
||||
.we(SelectedWriteWordEn), .bwe(FinalByteMask[SRAMLENINBYTES*(words+1)-1:SRAMLENINBYTES*words]));
|
||||
end else begin:wordram // no byte-enable needed for i$.
|
||||
ram1p1rwe #(.USE_SRAM(P.USE_SRAM), .DEPTH(NUMLINES), .WIDTH(SRAMLEN)) CacheDataMem(.clk, .ce(CacheEn), .addr(CacheSetData),
|
||||
.dout(ReadDataLine[SRAMLEN*(words+1)-1:SRAMLEN*words]),
|
||||
.din(LineWriteData[SRAMLEN*(words+1)-1:SRAMLEN*words]),
|
||||
ram1p1rwe #(.USE_SRAM(P.USE_SRAM), .DEPTH(NUMLINES), .WIDTH(P.CACHE_SRAMLEN)) CacheDataMem(.clk, .ce(CacheEn), .addr(CacheSetData),
|
||||
.dout(ReadDataLine[P.CACHE_SRAMLEN*(words+1)-1:P.CACHE_SRAMLEN*words]),
|
||||
.din(LineWriteData[P.CACHE_SRAMLEN*(words+1)-1:P.CACHE_SRAMLEN*words]),
|
||||
.we(SelectedWriteWordEn));
|
||||
end
|
||||
end
|
||||
|
@ -80,6 +80,7 @@ typedef struct packed {
|
||||
int ICACHE_NUMWAYS;
|
||||
int ICACHE_WAYSIZEINBYTES;
|
||||
int ICACHE_LINELENINBITS;
|
||||
int CACHE_SRAMLEN;
|
||||
|
||||
// Integer Divider Configuration
|
||||
// IDIV_BITSPERCYCLE must be 1, 2, or 4
|
||||
|
@ -110,11 +110,11 @@ module ram2p1r1wbe import cvw::*; #(parameter USE_SRAM=0, DEPTH=1024, WIDTH=68)
|
||||
// ***************************************************************************
|
||||
integer i;
|
||||
|
||||
/* initial begin // initialize memory for simulation only; not needed because done in the testbench now
|
||||
initial begin // initialize memory for simulation only; not needed because done in the testbench now
|
||||
integer j;
|
||||
for (j=0; j < DEPTH; j++)
|
||||
mem[j] = '0;
|
||||
end */
|
||||
end
|
||||
|
||||
// Read
|
||||
logic [$clog2(DEPTH)-1:0] ra1d;
|
||||
|
@ -102,7 +102,8 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
||||
logic HPTWLoadAccessFaultDelay, HPTWStoreAmoAccessFaultDelay, HPTWInstrAccessFaultDelay;
|
||||
logic HPTWAccessFaultDelay;
|
||||
logic TakeHPTWFault, TakeHPTWFaultDelay;
|
||||
|
||||
logic [P.XLEN-1:0] ReadDataNoXM;
|
||||
|
||||
// map hptw access faults onto either the original LSU load/store fault or instruction access fault
|
||||
assign LSUAccessFaultM = LSULoadAccessFaultM | LSUStoreAmoAccessFaultM;
|
||||
assign HPTWLoadAccessFault = LSUAccessFaultM & DTLBWalk & MemRWM[1] & ~MemRWM[0];
|
||||
@ -154,7 +155,8 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
||||
logic [P.XLEN-1:0] AccessedPTE;
|
||||
|
||||
assign AccessedPTE = {PTE[P.XLEN-1:8], (SetDirty | PTE[7]), 1'b1, PTE[5:0]}; // set accessed bit, conditionally set dirty bit
|
||||
mux2 #(P.XLEN) NextPTEMux(ReadDataM, AccessedPTE, UpdatePTE, NextPTE); // NextPTE = ReadDataM when ADUE = 0 because UpdatePTE = 0
|
||||
assign ReadDataNoXM = (ReadDataM[0] === 'x) ? '0 : ReadDataM; // If the PTE.V bit is x because it was read from uninitialized memory set to 0 to avoid x propagation and hanging the simulation.
|
||||
mux2 #(P.XLEN) NextPTEMux(ReadDataNoXM, AccessedPTE, UpdatePTE, NextPTE); // NextPTE = ReadDataNoXM when ADUE = 0 because UpdatePTE = 0
|
||||
flopenr #(P.PA_BITS) HPTWAdrWriteReg(clk, reset, SaveHPTWAdr, HPTWReadAdr, HPTWWriteAdr);
|
||||
|
||||
assign SaveHPTWAdr = WalkerState == L0_ADR;
|
||||
@ -190,7 +192,7 @@ module hptw import cvw::*; #(parameter cvw_t P) (
|
||||
assign UpdatePTE = (WalkerState == LEAF) & HPTWUpdateDA; // UpdatePTE will always be 0 if ADUE = 0 because HPTWUpdateDA will be 0
|
||||
|
||||
end else begin // block: hptwwrites
|
||||
assign NextPTE = ReadDataM;
|
||||
assign NextPTE = ReadDataNoXM;
|
||||
assign HPTWAdr = HPTWReadAdr;
|
||||
assign HPTWUpdateDA = '0;
|
||||
assign UpdatePTE = '0;
|
||||
|
@ -43,8 +43,8 @@ module DCacheFlushFSM import cvw::*; #(parameter cvw_t P)
|
||||
localparam numways = P.DCACHE_NUMWAYS;
|
||||
localparam linelen = P.DCACHE_LINELENINBITS;
|
||||
localparam linebytelen = linelen/8;
|
||||
localparam sramlen = testbench.dut.core.lsu.bus.dcache.dcache.CacheWays[0].SRAMLEN;
|
||||
localparam cachesramwords = testbench.dut.core.lsu.bus.dcache.dcache.CacheWays[0].NUMSRAM;
|
||||
localparam sramlen = P.CACHE_SRAMLEN;
|
||||
localparam cachesramwords = linelen/sramlen;
|
||||
localparam numwords = sramlen/P.XLEN;
|
||||
localparam lognumlines = $clog2(numlines);
|
||||
localparam loglinebytelen = $clog2(linebytelen);
|
||||
@ -97,7 +97,10 @@ module DCacheFlushFSM import cvw::*; #(parameter cvw_t P)
|
||||
// # ** Error: ../testbench/testbench.sv(483): Range must be bounded by constant expressions.
|
||||
// see https://verificationacademy.com/forums/systemverilog/range-must-be-bounded-constant-expressions
|
||||
//ShadowRAM[CacheAdr[j][i][k] >> $clog2(P.XLEN/8)] = cacheline[P.XLEN*(k+1)-1:P.XLEN*k];
|
||||
ShadowRAM[(CacheAdr[j][i][l] >> $clog2(P.XLEN/8)) + k] = CacheData[j][i][l][P.XLEN*k +: P.XLEN];
|
||||
/* verilator lint_off WIDTHTRUNC */
|
||||
// *** lint error: address trunc warning for shadowram index
|
||||
ShadowRAM[(CacheAdr[j][i][l] >> $clog2(P.XLEN/8)) + {{{P.PA_BITS-32}{1'b0}}, k}] = CacheData[j][i][l][P.XLEN*k +: P.XLEN];
|
||||
/* verilator lint_on WIDTHTRUNC */
|
||||
end
|
||||
end
|
||||
end
|
||||
@ -124,16 +127,26 @@ module copyShadow import cvw::*; #(parameter cvw_t P,
|
||||
output logic [P.XLEN-1:0] CacheTag,
|
||||
output logic CacheValid,
|
||||
output logic CacheDirty);
|
||||
|
||||
logic [P.XLEN+1:0] TagExtend;
|
||||
logic [P.XLEN+1:0] IndexExtend;
|
||||
logic [P.XLEN+1:0] CacheWordExtend;
|
||||
logic [P.XLEN+1:0] CacheAdrExtend;
|
||||
|
||||
assign TagExtend = {{{P.XLEN-(P.PA_BITS-tagstart)+2}{1'b0}}, tag};
|
||||
assign IndexExtend = {{{P.XLEN-32+2}{1'b0}}, index};
|
||||
assign CacheWordExtend = {{{P.XLEN-32+2}{1'b0}}, cacheWord};
|
||||
|
||||
always_ff @(posedge clk) begin
|
||||
if(start) begin
|
||||
CacheTag = tag;
|
||||
CacheTag = TagExtend[P.XLEN-1:0];
|
||||
CacheValid = valid;
|
||||
CacheDirty = dirty;
|
||||
CacheData = data;
|
||||
CacheAdr = (tag << tagstart) + (index << loglinebytelen) + (cacheWord << $clog2(sramlen/8));
|
||||
CacheAdrExtend = (TagExtend << tagstart) + (IndexExtend << loglinebytelen) + (CacheWordExtend << $clog2(sramlen/8));
|
||||
end
|
||||
end
|
||||
|
||||
assign CacheAdr = CacheAdrExtend[P.PA_BITS-1:0];
|
||||
|
||||
endmodule
|
@ -30,15 +30,15 @@ module FunctionName import cvw::*; #(parameter cvw_t P) (
|
||||
input string ProgramLabelMapFile
|
||||
);
|
||||
|
||||
logic [P.XLEN-1:0] ProgramAddrMapMemory [];
|
||||
string ProgramLabelMapMemory [integer];
|
||||
logic [P.XLEN-1:0] ProgramAddrMapMemory [logic [P.XLEN-1:0]];
|
||||
string ProgramLabelMapMemory [logic [P.XLEN-1:0]];
|
||||
string FunctionName;
|
||||
|
||||
|
||||
logic [P.XLEN-1:0] PCF, PCD, PCE, PCM, FunctionAddr, PCM_temp, PCMOld;
|
||||
logic StallD, StallE, StallM, FlushD, FlushE, FlushM;
|
||||
logic InstrValidM;
|
||||
integer ProgramAddrIndex, ProgramAddrIndexQ;
|
||||
logic [P.XLEN-1:0] ProgramAddrIndex, ProgramAddrIndexQ;
|
||||
|
||||
assign PCF = testbench.dut.core.ifu.PCF;
|
||||
assign StallD = testbench.dut.core.StallD;
|
||||
@ -62,7 +62,7 @@ module FunctionName import cvw::*; #(parameter cvw_t P) (
|
||||
task automatic bin_search_min;
|
||||
input logic [P.XLEN-1:0] pc;
|
||||
input logic [P.XLEN-1:0] length;
|
||||
ref logic [P.XLEN-1:0] array [];
|
||||
ref logic [P.XLEN-1:0] array [logic [P.XLEN-1:0]];
|
||||
output logic [P.XLEN-1:0] minval;
|
||||
output logic [P.XLEN-1:0] mid;
|
||||
|
||||
@ -109,8 +109,9 @@ module FunctionName import cvw::*; #(parameter cvw_t P) (
|
||||
endtask // bin_search_min
|
||||
|
||||
integer ProgramAddrMapFP, ProgramLabelMapFP;
|
||||
integer ProgramAddrMapLineCount, ProgramLabelMapLineCount;
|
||||
longint ProgramAddrMapLine;
|
||||
logic [P.XLEN-1:0] ProgramAddrMapLineCount;
|
||||
logic [P.XLEN-1:0] ProgramLabelMapLineCount;
|
||||
logic [P.XLEN-1:0] ProgramAddrMapLine;
|
||||
string ProgramLabelMapLine;
|
||||
integer status;
|
||||
|
||||
@ -118,22 +119,28 @@ module FunctionName import cvw::*; #(parameter cvw_t P) (
|
||||
// preload
|
||||
// initial begin
|
||||
always @ (negedge reset) begin
|
||||
|
||||
// cannot readmemh directoy to a dynmaic array. Sad times :(
|
||||
// Let's initialize a static array with FFFF_FFFF for all addresses.
|
||||
// Then we can readmemh and finally copy to the dynamic array.
|
||||
|
||||
// clear out the old mapping between programs.
|
||||
ProgramAddrMapMemory.delete();
|
||||
ProgramLabelMapMemory.delete();
|
||||
|
||||
$readmemh(ProgramAddrMapFile, ProgramAddrMapMemory);
|
||||
// Unfortunately verilator version 5.011 readmemh does not support dynamic arrays
|
||||
//$readmemh(ProgramAddrMapFile, ProgramAddrMapMemory);
|
||||
// we need to count the number of lines in the file so we can set FunctionRadixLineCount.
|
||||
|
||||
ProgramAddrMapLineCount = 0;
|
||||
ProgramAddrMapFP = $fopen(ProgramAddrMapFile, "r");
|
||||
|
||||
// read line by line to count lines
|
||||
if (ProgramAddrMapFP) begin
|
||||
if (ProgramAddrMapFP != '0) begin
|
||||
while (! $feof(ProgramAddrMapFP)) begin
|
||||
status = $fscanf(ProgramAddrMapFP, "%h\n", ProgramAddrMapLine);
|
||||
|
||||
ProgramAddrMapLineCount = ProgramAddrMapLineCount + 1;
|
||||
status = $fscanf(ProgramAddrMapFP, "%h\n", ProgramAddrMapLine);
|
||||
ProgramAddrMapMemory[ProgramAddrMapLineCount] = ProgramAddrMapLine;
|
||||
ProgramAddrMapLineCount = ProgramAddrMapLineCount + 1;
|
||||
end
|
||||
end else begin
|
||||
$display("Cannot open file %s for reading.", ProgramAddrMapFile);
|
||||
@ -147,7 +154,7 @@ module FunctionName import cvw::*; #(parameter cvw_t P) (
|
||||
ProgramLabelMapLineCount = 0;
|
||||
ProgramLabelMapFP = $fopen(ProgramLabelMapFile, "r");
|
||||
|
||||
if (ProgramLabelMapFP) begin
|
||||
if (ProgramLabelMapFP != '0) begin
|
||||
while (! $feof(ProgramLabelMapFP)) begin
|
||||
status = $fscanf(ProgramLabelMapFP, "%s\n", ProgramLabelMapLine);
|
||||
ProgramLabelMapMemory[ProgramLabelMapLineCount] = ProgramLabelMapLine;
|
||||
|
@ -36,7 +36,9 @@ module ramxdetector #(parameter XLEN, LLEN) (
|
||||
);
|
||||
|
||||
always_ff @(posedge clk)
|
||||
/* verilator lint_off WIDTHXZEXPAND */
|
||||
if (MemReadM & ~LSULoadAccessFaultM & (ReadDataM === 'bx)) begin
|
||||
/* verilator lint_on WIDTHXZEXPAND */
|
||||
$display("WARNING: Attempting to read from unitialized RAM. Processor may go haywire if it uses x value. But this is normal in WALLY-mmu tests.");
|
||||
$display(" PCM = %x InstrM = %x (%s), IEUAdrM = %x", PCM, InstrM, InstrMName, IEUAdrM);
|
||||
//$stop;
|
||||
|
@ -42,7 +42,7 @@ module riscvassertions import cvw::*; #(parameter cvw_t P);
|
||||
assert (2**$clog2(P.ICACHE_WAYSIZEINBYTES) == P.ICACHE_WAYSIZEINBYTES || (!P.ICACHE_SUPPORTED)) else $error("ICACHE_WAYSIZEINBYTES must be a power of 2");
|
||||
assert (2**$clog2(P.ITLB_ENTRIES) == P.ITLB_ENTRIES || P.VIRTMEM_SUPPORTED==0) else $error("ITLB_ENTRIES must be a power of 2");
|
||||
assert (2**$clog2(P.DTLB_ENTRIES) == P.DTLB_ENTRIES || P.VIRTMEM_SUPPORTED==0) else $error("DTLB_ENTRIES must be a power of 2");
|
||||
assert (P.UNCORE_RAM_RANGE >= 56'h07FFFFFF) else $warning("Some regression tests will fail if UNCORE_RAM_RANGE is less than 56'h07FFFFFF");
|
||||
assert (P.UNCORE_RAM_RANGE >= 64'h07FFFFFF) else $warning("Some regression tests will fail if UNCORE_RAM_RANGE is less than 64'h07FFFFFF");
|
||||
assert (P.ZICSR_SUPPORTED == 1 || (P.PMP_ENTRIES == 0 && P.VIRTMEM_SUPPORTED == 0)) else $error("PMP_ENTRIES and VIRTMEM_SUPPORTED must be zero if ZICSR not supported.");
|
||||
assert (P.ZICSR_SUPPORTED == 1 || (P.S_SUPPORTED == 0 && P.U_SUPPORTED == 0)) else $error("S and U modes not supported if ZICSR not supported");
|
||||
assert (P.U_SUPPORTED || (P.S_SUPPORTED == 0)) else $error ("S mode only supported if U also is supported");
|
||||
|
@ -37,7 +37,7 @@ module testbench;
|
||||
parameter DEBUG=0;
|
||||
parameter TEST="none";
|
||||
parameter PrintHPMCounters=0;
|
||||
parameter BPRED_LOGGER=1;
|
||||
parameter BPRED_LOGGER=0;
|
||||
parameter I_CACHE_ADDR_LOGGER=0;
|
||||
parameter D_CACHE_ADDR_LOGGER=0;
|
||||
|
||||
@ -85,7 +85,7 @@ module testbench;
|
||||
logic riscofTest;
|
||||
logic Validate;
|
||||
logic SelectTest;
|
||||
|
||||
logic TestComplete;
|
||||
|
||||
// pick tests based on modes supported
|
||||
initial begin
|
||||
@ -180,6 +180,7 @@ module testbench;
|
||||
STATE_LOAD_MEMORIES,
|
||||
STATE_RESET_TEST,
|
||||
STATE_RUN_TEST,
|
||||
STATE_COPY_RAM,
|
||||
STATE_CHECK_TEST,
|
||||
STATE_CHECK_TEST_WAIT,
|
||||
STATE_VALIDATE,
|
||||
@ -190,10 +191,10 @@ module testbench;
|
||||
logic LoadMem;
|
||||
logic ResetCntEn;
|
||||
logic ResetCntRst;
|
||||
|
||||
logic CopyRAM;
|
||||
|
||||
string signame, memfilename, pathname;
|
||||
integer begin_signature_addr;
|
||||
integer begin_signature_addr, end_signature_addr, signature_size;
|
||||
|
||||
assign ResetThreshold = 3'd5;
|
||||
|
||||
@ -222,8 +223,9 @@ module testbench;
|
||||
STATE_LOAD_MEMORIES: NextState = STATE_RESET_TEST;
|
||||
STATE_RESET_TEST: if(ResetCount < ResetThreshold) NextState = STATE_RESET_TEST;
|
||||
else NextState = STATE_RUN_TEST;
|
||||
STATE_RUN_TEST: if(DCacheFlushStart) NextState = STATE_CHECK_TEST;
|
||||
STATE_RUN_TEST: if(TestComplete) NextState = STATE_COPY_RAM;
|
||||
else NextState = STATE_RUN_TEST;
|
||||
STATE_COPY_RAM: NextState = STATE_CHECK_TEST;
|
||||
STATE_CHECK_TEST: if (DCacheFlushDone) NextState = STATE_VALIDATE;
|
||||
else NextState = STATE_CHECK_TEST_WAIT;
|
||||
STATE_CHECK_TEST_WAIT: if(DCacheFlushDone) NextState = STATE_VALIDATE;
|
||||
@ -244,6 +246,8 @@ module testbench;
|
||||
assign ResetCntEn = CurrState == STATE_RESET_TEST;
|
||||
assign Validate = CurrState == STATE_VALIDATE;
|
||||
assign SelectTest = CurrState == STATE_INIT_TEST;
|
||||
assign CopyRAM = TestComplete & CurrState == STATE_RUN_TEST;
|
||||
assign DCacheFlushStart = CurrState == STATE_COPY_RAM;
|
||||
|
||||
// fsm reset counter
|
||||
counter #(3) RstCounter(clk, ResetCntRst, ResetCntEn, ResetCount);
|
||||
@ -253,6 +257,8 @@ module testbench;
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
logic [P.XLEN-1:0] testadr;
|
||||
assign begin_signature_addr = ProgramAddrLabelArray["begin_signature"];
|
||||
assign end_signature_addr = ProgramAddrLabelArray["sig_end_canary"];
|
||||
assign signature_size = end_signature_addr - begin_signature_addr;
|
||||
always @(posedge clk) begin
|
||||
if(SelectTest) begin
|
||||
if (riscofTest) memfilename = {pathname, tests[test], "/ref/ref.elf.memfile"};
|
||||
@ -321,58 +327,18 @@ module testbench;
|
||||
end
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Some memories are not reset, but should be zeros or set to some initial value for simulation
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
integer adrindex;
|
||||
if (P.UNCORE_RAM_SUPPORTED)
|
||||
always @(posedge clk)
|
||||
if (ResetMem) // program memory is sometimes reset
|
||||
for (adrindex=0; adrindex<(P.UNCORE_RAM_RANGE>>1+(P.XLEN/32)); adrindex = adrindex+1)
|
||||
dut.uncore.uncore.ram.ram.memory.RAM[adrindex] = '0;
|
||||
|
||||
if (P.BPRED_SUPPORTED)
|
||||
always @(posedge clk)
|
||||
if(reset) begin // branch predictor must always be reset
|
||||
for(adrindex = 0; adrindex < 2**P.BTB_SIZE; adrindex++)
|
||||
dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[adrindex] = 0;
|
||||
for(adrindex = 0; adrindex < 2**P.BPRED_SIZE; adrindex++)
|
||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem[adrindex] = 0;
|
||||
end
|
||||
|
||||
if (P.BPRED_SUPPORTED & (P.BPRED_TYPE == `BP_LOCAL_AHEAD | P.BPRED_TYPE == `BP_LOCAL_REPAIR)) // local history only
|
||||
always @(posedge clk)
|
||||
if(reset) // branch predictor must always be reset
|
||||
for(adrindex = 0; adrindex < 2**P.BPRED_NUM_LHR; adrindex++)
|
||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.BHT.mem[adrindex] = 0;
|
||||
|
||||
/*
|
||||
always @(posedge clk) begin
|
||||
if (ResetMem) // program memory is sometimes reset
|
||||
if (P.UNCORE_RAM_SUPPORTED)
|
||||
for (adrindex=0; adrindex<(P.UNCORE_RAM_RANGE>>1+(P.XLEN/32)); adrindex = adrindex+1)
|
||||
dut.uncore.uncore.ram.ram.memory.RAM[adrindex] = '0;
|
||||
if(reset) begin // branch predictor must always be reset
|
||||
if (P.BPRED_SUPPORTED) begin
|
||||
// local history only
|
||||
if (P.BPRED_TYPE == `BP_LOCAL_AHEAD | P.BPRED_TYPE == `BP_LOCAL_REPAIR)
|
||||
for(adrindex = 0; adrindex < 2**P.BPRED_NUM_LHR; adrindex++)
|
||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.BHT.mem[adrindex] = 0;
|
||||
for(adrindex = 0; adrindex < 2**P.BTB_SIZE; adrindex++)
|
||||
dut.core.ifu.bpred.bpred.TargetPredictor.memory.mem[adrindex] = 0;
|
||||
for(adrindex = 0; adrindex < 2**P.BPRED_SIZE; adrindex++)
|
||||
dut.core.ifu.bpred.bpred.Predictor.DirPredictor.PHT.mem[adrindex] = 0;
|
||||
end
|
||||
end
|
||||
end
|
||||
*/
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// load memories with program image
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
always @(posedge clk) begin
|
||||
if (LoadMem) begin
|
||||
if (P.SDC_SUPPORTED) begin
|
||||
|
||||
integer ShadowIndex;
|
||||
integer LogXLEN;
|
||||
integer StartIndex;
|
||||
integer EndIndex;
|
||||
integer BaseIndex;
|
||||
if (P.SDC_SUPPORTED) begin
|
||||
always @(posedge clk) begin
|
||||
if (LoadMem) begin
|
||||
string romfilename, sdcfilename;
|
||||
romfilename = {"../tests/custom/fpga-test-sdc/bin/fpga-test-sdc.memfile"};
|
||||
sdcfilename = {"../testbench/sdc/ramdisk2.hex"};
|
||||
@ -380,13 +346,47 @@ module testbench;
|
||||
//$readmemh(sdcfilename, sdcard.sdcard.FLASHmem);
|
||||
// shorten sdc timers for simulation
|
||||
//dut.uncore.uncore.sdc.SDC.LimitTimers = 1;
|
||||
end
|
||||
else if (P.IROM_SUPPORTED) $readmemh(memfilename, dut.core.ifu.irom.irom.rom.ROM);
|
||||
else if (P.BUS_SUPPORTED) $readmemh(memfilename, dut.uncore.uncore.ram.ram.memory.RAM);
|
||||
if (P.DTIM_SUPPORTED) $readmemh(memfilename, dut.core.lsu.dtim.dtim.ram.RAM);
|
||||
$display("Read memfile %s", memfilename);
|
||||
end
|
||||
end
|
||||
end
|
||||
end else if (P.IROM_SUPPORTED) begin
|
||||
always @(posedge clk) begin
|
||||
if (LoadMem) begin
|
||||
$readmemh(memfilename, dut.core.ifu.irom.irom.rom.ROM);
|
||||
end
|
||||
end
|
||||
end else if (P.BUS_SUPPORTED) begin : bus_supported
|
||||
always @(posedge clk) begin
|
||||
if (LoadMem) begin
|
||||
$readmemh(memfilename, dut.uncore.uncore.ram.ram.memory.RAM);
|
||||
end
|
||||
if (CopyRAM) begin
|
||||
LogXLEN = (1 + P.XLEN/32); // 2 for rv32 and 3 for rv64
|
||||
StartIndex = begin_signature_addr >> LogXLEN;
|
||||
EndIndex = (end_signature_addr >> LogXLEN) + 8;
|
||||
BaseIndex = P.UNCORE_RAM_BASE >> LogXLEN;
|
||||
for(ShadowIndex = StartIndex; ShadowIndex <= EndIndex; ShadowIndex++) begin
|
||||
testbench.DCacheFlushFSM.ShadowRAM[ShadowIndex] = dut.uncore.uncore.ram.ram.memory.RAM[ShadowIndex - BaseIndex];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
if (P.DTIM_SUPPORTED) begin
|
||||
always @(posedge clk) begin
|
||||
if (LoadMem) begin
|
||||
$readmemh(memfilename, dut.core.lsu.dtim.dtim.ram.RAM);
|
||||
$display("Read memfile %s", memfilename);
|
||||
end
|
||||
if (CopyRAM) begin
|
||||
LogXLEN = (1 + P.XLEN/32); // 2 for rv32 and 3 for rv64
|
||||
StartIndex = begin_signature_addr >> LogXLEN;
|
||||
EndIndex = (end_signature_addr >> LogXLEN) + 8;
|
||||
BaseIndex = P.UNCORE_RAM_BASE >> LogXLEN;
|
||||
for(ShadowIndex = StartIndex; ShadowIndex <= EndIndex; ShadowIndex++) begin
|
||||
testbench.DCacheFlushFSM.ShadowRAM[ShadowIndex] = dut.core.lsu.dtim.dtim.ram.RAM[ShadowIndex - BaseIndex];
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// Actual hardware
|
||||
@ -476,14 +476,15 @@ module testbench;
|
||||
logic ecf; // remove this once we don't rely on old Imperas tests with Ecalls
|
||||
if (P.ZICSR_SUPPORTED) assign ecf = dut.core.priv.priv.EcallFaultM;
|
||||
else assign ecf = 0;
|
||||
assign DCacheFlushStart = ecf &
|
||||
assign TestComplete = ecf &
|
||||
(dut.core.ieu.dp.regf.rf[3] == 1 |
|
||||
(dut.core.ieu.dp.regf.we3 &
|
||||
dut.core.ieu.dp.regf.a3 == 3 &
|
||||
dut.core.ieu.dp.regf.wd3 == 1)) |
|
||||
((InstrM == 32'h6f | InstrM == 32'hfc32a423 | InstrM == 32'hfc32a823) & dut.core.ieu.c.InstrValidM ) |
|
||||
((dut.core.lsu.IEUAdrM == ProgramAddrLabelArray["tohost"]) & InstrMName == "SW" );
|
||||
|
||||
((dut.core.lsu.IEUAdrM == ProgramAddrLabelArray["tohost"]) & InstrMName == "SW" );
|
||||
//assign DCacheFlushStart = TestComplete;
|
||||
|
||||
DCacheFlushFSM #(P) DCacheFlushFSM(.clk(clk), .reset(reset), .start(DCacheFlushStart), .done(DCacheFlushDone));
|
||||
|
||||
task automatic CheckSignature;
|
||||
@ -535,15 +536,24 @@ module testbench;
|
||||
testadr = ($unsigned(begin_signature_addr))/(P.XLEN/8);
|
||||
testadrNoBase = (begin_signature_addr - P.UNCORE_RAM_BASE)/(P.XLEN/8);
|
||||
/* verilator lint_off INFINITELOOP */
|
||||
/* verilator lint_off WIDTHXZEXPAND */
|
||||
while (signature[i] !== 'bx) begin
|
||||
/* verilator lint_on WIDTHXZEXPAND */
|
||||
logic [P.XLEN-1:0] sig;
|
||||
if (P.DTIM_SUPPORTED) sig = testbench.dut.core.lsu.dtim.dtim.ram.RAM[testadrNoBase+i];
|
||||
else if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||
// **************************************
|
||||
// ***** BUG BUG BUG make sure RT undoes this.
|
||||
//if (P.DTIM_SUPPORTED) sig = testbench.dut.core.lsu.dtim.dtim.ram.RAM[testadrNoBase+i];
|
||||
//else if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||
if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||
//if (P.UNCORE_RAM_SUPPORTED) sig = testbench.dut.uncore.uncore.ram.ram.memory.RAM[testadrNoBase+i];
|
||||
//$display("signature[%h] = %h sig = %h", i, signature[i], sig);
|
||||
if (signature[i] !== sig & (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i])) begin
|
||||
//if (signature[i] !== sig & (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i])) begin
|
||||
if (signature[i] !== testbench.DCacheFlushFSM.ShadowRAM[testadr+i]) begin
|
||||
errors = errors+1;
|
||||
$display(" Error on test %s result %d: adr = %h sim (D$) %h sim (DTIM_SUPPORTED) = %h, signature = %h",
|
||||
TestName, i, (testadr+i)*(P.XLEN/8), testbench.DCacheFlushFSM.ShadowRAM[testadr+i], sig, signature[i]);
|
||||
//$display(" Error on test %s result %d: adr = %h sim (DTIM_SUPPORTED) = %h, signature = %h",
|
||||
// TestName, i, (testadr+i)*(P.XLEN/8), testbench.DCacheFlushFSM.ShadowRAM[testadr+i], signature[i]);
|
||||
$stop; //***debug
|
||||
end
|
||||
i = i + 1;
|
||||
@ -573,14 +583,15 @@ task automatic updateProgramAddrLabelArray;
|
||||
inout integer ProgramAddrLabelArray [string];
|
||||
// Gets the memory location of begin_signature
|
||||
integer ProgramLabelMapFP, ProgramAddrMapFP;
|
||||
|
||||
ProgramLabelMapFP = $fopen(ProgramLabelMapFile, "r");
|
||||
ProgramAddrMapFP = $fopen(ProgramAddrMapFile, "r");
|
||||
|
||||
|
||||
if (ProgramLabelMapFP & ProgramAddrMapFP) begin // check we found both files
|
||||
// *** RT: I'm a bit confused by the required initialization here.
|
||||
ProgramAddrLabelArray["begin_signature"] = 0;
|
||||
ProgramAddrLabelArray["tohost"] = 0;
|
||||
ProgramAddrLabelArray["sig_end_canary"] = 0;
|
||||
while (!$feof(ProgramLabelMapFP)) begin
|
||||
string label, adrstr;
|
||||
integer returncode;
|
||||
@ -589,6 +600,10 @@ task automatic updateProgramAddrLabelArray;
|
||||
if (ProgramAddrLabelArray.exists(label)) ProgramAddrLabelArray[label] = adrstr.atohex();
|
||||
end
|
||||
end
|
||||
|
||||
if(ProgramAddrLabelArray["begin"] == 0) $display("Couldn't find begin_signature in %s", ProgramLabelMapFile);
|
||||
if(ProgramAddrLabelArray["sig_end_canary"] == 0) $display("Couldn't find sig_end_canary in %s", ProgramLabelMapFile);
|
||||
|
||||
$fclose(ProgramLabelMapFP);
|
||||
$fclose(ProgramAddrMapFP);
|
||||
/* verilator lint_on WIDTHTRUNC */
|
||||
|
@ -76,6 +76,10 @@ gpr_save:
|
||||
|
||||
#endif
|
||||
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../../wally-riscv-arch-test/riscv-test-suite/rv32i_m/D/src/WALLY-fld.S
|
||||
// David_Harris@hmc.edu & Katherine Parry
|
||||
|
@ -2997,5 +2997,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2887,5 +2887,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3022,5 +3022,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2847,5 +2847,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -387,5 +387,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3027,5 +3027,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3012,5 +3012,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3717,5 +3717,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3007,5 +3007,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3712,5 +3712,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3007,5 +3007,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -152,5 +152,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -212,5 +212,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -162,5 +162,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -162,5 +162,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -152,5 +152,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -157,5 +157,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -387,5 +387,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -157,5 +157,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3032,5 +3032,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2862,5 +2862,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -462,5 +462,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -432,5 +432,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -517,5 +517,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -522,5 +522,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2987,5 +2987,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2887,5 +2887,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3562,5 +3562,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3692,5 +3692,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -527,5 +527,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -512,5 +512,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -522,5 +522,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -517,5 +517,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -3002,5 +3002,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -412,5 +412,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2997,5 +2997,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -2877,5 +2877,8 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
|
@ -132,6 +132,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-ADD.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SLT.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SLTU.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-SUB.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv32i_m/I/src/WALLY-XOR.S
|
||||
|
@ -1,4 +0,0 @@
|
||||
include ../../Makefile.include
|
||||
|
||||
$(eval $(call compile_template,-march=rv32ib -mabi=ilp32 -DXLEN=$(XLEN)))
|
||||
|
@ -1,31 +0,0 @@
|
||||
# RISC-V Compliance Test RV32K Makefrag
|
||||
#
|
||||
#
|
||||
# Copyright (c) 2021 Imperas Software Ltd., www.imperas.com
|
||||
# Copyright (c) 2021 Indian Institute of Technology Madras
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Description: Makefrag for RV32K compliance tests
|
||||
|
||||
rv32k_sc_tests = \
|
||||
|
||||
rv32k_tests = $(addsuffix .elf, $(rv32k_sc_tests))
|
||||
|
||||
target_tests += $(rv32k_tests)
|
||||
|
@ -39,7 +39,7 @@ beef0110
|
||||
0000000d # Test 11.3.1.3.6(a) page fault on read when A = 0
|
||||
00000bad
|
||||
0000000f # Test 11.3.1.3.7(a) page fault on write when D = 0
|
||||
deadbeef # Test 11.3.1.3.7(a) successful read when D = 0
|
||||
12345678 # Test 11.3.1.3.7(a) successful read when D = 0
|
||||
00000009 # call from going to m mode from s mode
|
||||
0000000b # ecall from going to S mode from m mode
|
||||
beef0770 # Test 11.3.1.3.6: check successful read/write when A=0 and MENVCFG.ADUE=1
|
||||
|
@ -1428,6 +1428,9 @@ RVMODEL_DATA_BEGIN
|
||||
test_1_res:
|
||||
.fill 1024, 4, 0xdeadbeef
|
||||
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
RVMODEL_DATA_END
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
@ -468,5 +468,8 @@ Destination3:
|
||||
signature:
|
||||
.fill 16, 4, 0x0bad0bad
|
||||
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
RVMODEL_DATA_END
|
||||
|
||||
|
@ -372,6 +372,8 @@ Destination2:
|
||||
.fill 16, 4, 0xdeadbeef
|
||||
signature:
|
||||
.fill 16, 4, 0x0bad0bad
|
||||
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
RVMODEL_DATA_END
|
||||
|
||||
|
@ -113,4 +113,7 @@ RVMODEL_DATA_BEGIN
|
||||
# signature output
|
||||
wally_signature:
|
||||
.fill 6, 4, -1
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
RVMODEL_DATA_END
|
||||
|
@ -88,6 +88,7 @@ test_cases:
|
||||
.4byte 0x80805EA0, 0xBEEF0440, write32_test # 11.3.1.3.3
|
||||
.4byte 0x8000FFA0, 0x11100393, write32_test # write executable code for "li x7, 0x111; ret" to executable region.
|
||||
.4byte 0x8000FFA4, 0x00008067, write32_test # Used for 11.3.1.3.1, 11.3.1.3.2
|
||||
.4byte 0x80803658, 0x12345678, write32_test # initialize memory for 11.3.1.3.7(a)
|
||||
|
||||
# test 11.3.1.1.3 read values back from Paddrs without translation (this also verifies the previous test)
|
||||
.4byte 0x0, 0x0, goto_baremetal # satp.MODE = baremetal / no translation.
|
||||
|
@ -917,4 +917,7 @@ RVMODEL_DATA_BEGIN
|
||||
# signature output
|
||||
wally_signature:
|
||||
.fill 0x200, 8, 0x00000000
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
RVMODEL_DATA_END
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-ADD.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLT.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SLTU.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-SUB.S
|
||||
|
@ -133,6 +133,9 @@ gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
sig_end_canary:
|
||||
.int 0x0
|
||||
rvtest_sig_end:
|
||||
|
||||
RVMODEL_DATA_END
|
||||
// ../wally-riscv-arch-test/riscv-test-suite/rv64i_m/I/src/WALLY-XOR.S
|
||||
|
@ -1,4 +0,0 @@
|
||||
include ../../Makefile.include
|
||||
|
||||
$(eval $(call compile_template,-march=rv64ib -mabi=lp64 -DXLEN=$(XLEN)))
|
||||
|
@ -1,31 +0,0 @@
|
||||
# RISC-V Compliance Test RV64K Makefrag
|
||||
#
|
||||
#
|
||||
# Copyright (c) 2021 Imperas Software Ltd., www.imperas.com
|
||||
# Copyright (c) 2021 Indian Institute of Technology Madras
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
|
||||
# either express or implied.
|
||||
#
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
#
|
||||
|
||||
#
|
||||
# Description: Makefrag for RV64K compliance tests
|
||||
|
||||
rv64k_sc_tests = \
|
||||
|
||||
rv64k_tests = $(addsuffix .elf, $(rv64k_sc_tests))
|
||||
|
||||
target_tests += $(rv64k_tests)
|
||||
|
@ -1,364 +0,0 @@
|
||||
// -----------
|
||||
// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
|
||||
// version : 0.4.5
|
||||
// timestamp : Thu May 20 05:32:05 2021 GMT
|
||||
// usage : riscv_ctg \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
|
||||
// --base-isa rv64i \
|
||||
// --randomize
|
||||
// -----------
|
||||
//
|
||||
// -----------
|
||||
// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// -----------
|
||||
//
|
||||
// This assembly file tests the aes64ds instruction of the RISC-V extension for the aes64ds covergroup.
|
||||
//
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ds)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ds)
|
||||
|
||||
RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnd.*);def TEST_CASE_1=True;",aes64ds)
|
||||
|
||||
RVTEST_SIGBASE( x1,signature_x1_1)
|
||||
|
||||
inst_0:
|
||||
// rs1 == rs2 != rd, rs1==x6, rs2==x6, rd==x23, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64ds ; op1:x6; op2:x6; dest:x23; op1val:0x706050403020100; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64ds, x23, x6, x6, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x1, 0, x5)
|
||||
|
||||
inst_1:
|
||||
// rs1 == rs2 == rd, rs1==x8, rs2==x8, rd==x8, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64ds ; op1:x8; op2:x8; dest:x8; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
|
||||
TEST_RR_OP(aes64ds, x8, x8, x8, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x1, 8, x5)
|
||||
|
||||
inst_2:
|
||||
// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x31, rs2==x7, rd==x17, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
|
||||
// opcode: aes64ds ; op1:x31; op2:x7; dest:x17; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
|
||||
TEST_RR_OP(aes64ds, x17, x31, x7, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x1, 16, x5)
|
||||
|
||||
inst_3:
|
||||
// rs1 == rd != rs2, rs1==x25, rs2==x2, rd==x25, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
|
||||
// opcode: aes64ds ; op1:x25; op2:x2; dest:x25; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
|
||||
TEST_RR_OP(aes64ds, x25, x25, x2, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x1, 24, x5)
|
||||
|
||||
inst_4:
|
||||
// rs2 == rd != rs1, rs1==x20, rs2==x4, rd==x4, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
|
||||
// opcode: aes64ds ; op1:x20; op2:x4; dest:x4; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
|
||||
TEST_RR_OP(aes64ds, x4, x20, x4, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x1, 32, x5)
|
||||
|
||||
inst_5:
|
||||
// rs1==x29, rs2==x24, rd==x27, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
|
||||
// opcode: aes64ds ; op1:x29; op2:x24; dest:x27; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
|
||||
TEST_RR_OP(aes64ds, x27, x29, x24, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x1, 40, x5)
|
||||
|
||||
inst_6:
|
||||
// rs1==x30, rs2==x15, rd==x11, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
|
||||
// opcode: aes64ds ; op1:x30; op2:x15; dest:x11; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
|
||||
TEST_RR_OP(aes64ds, x11, x30, x15, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x1, 48, x5)
|
||||
|
||||
inst_7:
|
||||
// rs1==x4, rs2==x26, rd==x16, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
|
||||
// opcode: aes64ds ; op1:x4; op2:x26; dest:x16; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
|
||||
TEST_RR_OP(aes64ds, x16, x4, x26, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x1, 56, x5)
|
||||
|
||||
inst_8:
|
||||
// rs1==x9, rs2==x14, rd==x3, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
|
||||
// opcode: aes64ds ; op1:x9; op2:x14; dest:x3; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
|
||||
TEST_RR_OP(aes64ds, x3, x9, x14, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x1, 64, x5)
|
||||
|
||||
inst_9:
|
||||
// rs1==x19, rs2==x12, rd==x15, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
|
||||
// opcode: aes64ds ; op1:x19; op2:x12; dest:x15; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
|
||||
TEST_RR_OP(aes64ds, x15, x19, x12, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x1, 72, x5)
|
||||
|
||||
inst_10:
|
||||
// rs1==x26, rs2==x17, rd==x21, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
|
||||
// opcode: aes64ds ; op1:x26; op2:x17; dest:x21; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
|
||||
TEST_RR_OP(aes64ds, x21, x26, x17, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x1, 80, x5)
|
||||
|
||||
inst_11:
|
||||
// rs1==x16, rs2==x13, rd==x19, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
|
||||
// opcode: aes64ds ; op1:x16; op2:x13; dest:x19; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
|
||||
TEST_RR_OP(aes64ds, x19, x16, x13, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x1, 88, x5)
|
||||
|
||||
inst_12:
|
||||
// rs1==x3, rs2==x22, rd==x26, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
|
||||
// opcode: aes64ds ; op1:x3; op2:x22; dest:x26; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
|
||||
TEST_RR_OP(aes64ds, x26, x3, x22, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x1, 96, x5)
|
||||
|
||||
inst_13:
|
||||
// rs1==x2, rs2==x3, rd==x18, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
|
||||
// opcode: aes64ds ; op1:x2; op2:x3; dest:x18; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
|
||||
TEST_RR_OP(aes64ds, x18, x2, x3, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x1, 104, x5)
|
||||
|
||||
inst_14:
|
||||
// rs1==x27, rs2==x11, rd==x30, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
|
||||
// opcode: aes64ds ; op1:x27; op2:x11; dest:x30; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
|
||||
TEST_RR_OP(aes64ds, x30, x27, x11, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x1, 112, x3)
|
||||
|
||||
inst_15:
|
||||
// rs1==x13, rs2==x29, rd==x12, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
|
||||
// opcode: aes64ds ; op1:x13; op2:x29; dest:x12; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
|
||||
TEST_RR_OP(aes64ds, x12, x13, x29, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x1, 120, x3)
|
||||
|
||||
inst_16:
|
||||
// rs1==x23, rs2==x20, rd==x24, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
|
||||
// opcode: aes64ds ; op1:x23; op2:x20; dest:x24; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
|
||||
TEST_RR_OP(aes64ds, x24, x23, x20, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x1, 128, x3)
|
||||
|
||||
inst_17:
|
||||
// rs1==x17, rs2==x28, rd==x2, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
|
||||
// opcode: aes64ds ; op1:x17; op2:x28; dest:x2; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
|
||||
TEST_RR_OP(aes64ds, x2, x17, x28, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x1, 136, x3)
|
||||
RVTEST_SIGBASE( x2,signature_x2_0)
|
||||
|
||||
inst_18:
|
||||
// rs1==x21, rs2==x5, rd==x20, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
|
||||
// opcode: aes64ds ; op1:x21; op2:x5; dest:x20; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
|
||||
TEST_RR_OP(aes64ds, x20, x21, x5, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x2, 0, x3)
|
||||
|
||||
inst_19:
|
||||
// rs1==x24, rs2==x31, rd==x28, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
|
||||
// opcode: aes64ds ; op1:x24; op2:x31; dest:x28; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
|
||||
TEST_RR_OP(aes64ds, x28, x24, x31, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x2, 8, x3)
|
||||
|
||||
inst_20:
|
||||
// rs1==x7, rs2==x19, rd==x9, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
|
||||
// opcode: aes64ds ; op1:x7; op2:x19; dest:x9; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
|
||||
TEST_RR_OP(aes64ds, x9, x7, x19, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x2, 16, x3)
|
||||
|
||||
inst_21:
|
||||
// rs1==x1, rs2==x23, rd==x29, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
|
||||
// opcode: aes64ds ; op1:x1; op2:x23; dest:x29; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
|
||||
TEST_RR_OP(aes64ds, x29, x1, x23, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x2, 24, x3)
|
||||
|
||||
inst_22:
|
||||
// rs1==x10, rs2==x9, rd==x31, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
|
||||
// opcode: aes64ds ; op1:x10; op2:x9; dest:x31; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
|
||||
TEST_RR_OP(aes64ds, x31, x10, x9, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x2, 32, x3)
|
||||
|
||||
inst_23:
|
||||
// rs1==x12, rs2==x1, rd==x6, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
|
||||
// opcode: aes64ds ; op1:x12; op2:x1; dest:x6; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
|
||||
TEST_RR_OP(aes64ds, x6, x12, x1, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x2, 40, x3)
|
||||
|
||||
inst_24:
|
||||
// rs1==x11, rs2==x18, rd==x0, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
|
||||
// opcode: aes64ds ; op1:x11; op2:x18; dest:x0; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
|
||||
TEST_RR_OP(aes64ds, x0, x11, x18, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x2, 48, x3)
|
||||
|
||||
inst_25:
|
||||
// rs1==x0, rs2==x21, rd==x1, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
|
||||
// opcode: aes64ds ; op1:x0; op2:x21; dest:x1; op1val:0x0; op2val:0xd7d6d5d4d3d2d1d0
|
||||
TEST_RR_OP(aes64ds, x1, x0, x21, 0x0000000000000000, 0x0, 0xd7d6d5d4d3d2d1d0, x2, 56, x3)
|
||||
|
||||
inst_26:
|
||||
// rs1==x28, rs2==x27, rd==x22, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
|
||||
// opcode: aes64ds ; op1:x28; op2:x27; dest:x22; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
|
||||
TEST_RR_OP(aes64ds, x22, x28, x27, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x2, 64, x3)
|
||||
|
||||
inst_27:
|
||||
// rs1==x15, rs2==x10, rd==x13, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
|
||||
// opcode: aes64ds ; op1:x15; op2:x10; dest:x13; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
|
||||
TEST_RR_OP(aes64ds, x13, x15, x10, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x2, 72, x3)
|
||||
|
||||
inst_28:
|
||||
// rs1==x14, rs2==x16, rd==x10, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
|
||||
// opcode: aes64ds ; op1:x14; op2:x16; dest:x10; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
|
||||
TEST_RR_OP(aes64ds, x10, x14, x16, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x2, 80, x3)
|
||||
|
||||
inst_29:
|
||||
// rs1==x5, rs2==x30, rd==x7, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
|
||||
// opcode: aes64ds ; op1:x5; op2:x30; dest:x7; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
|
||||
TEST_RR_OP(aes64ds, x7, x5, x30, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x2, 88, x3)
|
||||
|
||||
inst_30:
|
||||
// rs1==x22, rs2==x0, rd==x5, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
|
||||
// opcode: aes64ds ; op1:x22; op2:x0; dest:x5; op1val:0xb7b6b5b4b3b2b1b0; op2val:0x0
|
||||
TEST_RR_OP(aes64ds, x5, x22, x0, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0x0, x2, 96, x3)
|
||||
|
||||
inst_31:
|
||||
// rs1==x18, rs2==x25, rd==x14, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
|
||||
// opcode: aes64ds ; op1:x18; op2:x25; dest:x14; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
|
||||
TEST_RR_OP(aes64ds, x14, x18, x25, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x2, 104, x3)
|
||||
|
||||
inst_32:
|
||||
// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x2, 112, x3)
|
||||
|
||||
inst_33:
|
||||
// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x2, 120, x3)
|
||||
|
||||
inst_34:
|
||||
// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x2, 128, x3)
|
||||
|
||||
inst_35:
|
||||
// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x2, 136, x3)
|
||||
|
||||
inst_36:
|
||||
// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x2, 144, x3)
|
||||
|
||||
inst_37:
|
||||
// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x2, 152, x3)
|
||||
|
||||
inst_38:
|
||||
// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x2, 160, x3)
|
||||
|
||||
inst_39:
|
||||
// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x2, 168, x3)
|
||||
|
||||
inst_40:
|
||||
// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x2, 176, x3)
|
||||
|
||||
inst_41:
|
||||
// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x2, 184, x3)
|
||||
|
||||
inst_42:
|
||||
// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x2, 192, x3)
|
||||
|
||||
inst_43:
|
||||
// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x2, 200, x3)
|
||||
|
||||
inst_44:
|
||||
// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x2, 208, x3)
|
||||
|
||||
inst_45:
|
||||
// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x2, 216, x3)
|
||||
|
||||
inst_46:
|
||||
// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x2, 224, x3)
|
||||
|
||||
inst_47:
|
||||
// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x2, 232, x3)
|
||||
|
||||
inst_48:
|
||||
// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x2, 240, x3)
|
||||
|
||||
inst_49:
|
||||
// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x2, 248, x3)
|
||||
|
||||
inst_50:
|
||||
// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x2, 256, x3)
|
||||
|
||||
inst_51:
|
||||
// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x2, 264, x3)
|
||||
|
||||
inst_52:
|
||||
// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x2, 272, x3)
|
||||
|
||||
inst_53:
|
||||
// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x2, 280, x3)
|
||||
|
||||
inst_54:
|
||||
// rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x2, 288, x3)
|
||||
|
||||
inst_55:
|
||||
// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x2, 296, x3)
|
||||
|
||||
inst_56:
|
||||
// rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
|
||||
// opcode: aes64ds ; op1:x10; op2:x11; dest:x12; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
|
||||
TEST_RR_OP(aes64ds, x12, x10, x11, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x2, 304, x3)
|
||||
#endif
|
||||
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x1_0:
|
||||
.fill 0*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x1_1:
|
||||
.fill 18*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x2_0:
|
||||
.fill 39*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,389 +0,0 @@
|
||||
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ds)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ds)
|
||||
|
||||
RVTEST_SIGBASE( x31,signature_x31_1)
|
||||
|
||||
inst_0:
|
||||
// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
xor x1, x1, x2;
|
||||
aes64ds x3, x1, x2;
|
||||
aes64ds x4, x2, x1;
|
||||
xor x5, x4, x2;
|
||||
RVTEST_SIGUPD(x31,x3,0);
|
||||
RVTEST_SIGUPD(x31,x4,8);
|
||||
RVTEST_SIGUPD(x31,x5,16);
|
||||
|
||||
inst_1:
|
||||
// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
xor x2, x2, x3;
|
||||
aes64ds x4, x2, x3;
|
||||
aes64ds x5, x3, x2;
|
||||
xor x6, x5, x3;
|
||||
RVTEST_SIGUPD(x31,x4,24);
|
||||
RVTEST_SIGUPD(x31,x5,32);
|
||||
RVTEST_SIGUPD(x31,x6,40);
|
||||
|
||||
inst_2:
|
||||
// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
xor x3, x3, x4;
|
||||
aes64ds x5, x3, x4;
|
||||
aes64ds x6, x4, x3;
|
||||
xor x7, x6, x4;
|
||||
RVTEST_SIGUPD(x31,x5,48);
|
||||
RVTEST_SIGUPD(x31,x6,56);
|
||||
RVTEST_SIGUPD(x31,x7,64);
|
||||
|
||||
inst_3:
|
||||
// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
xor x4, x4, x5;
|
||||
aes64ds x6, x4, x5;
|
||||
aes64ds x7, x5, x4;
|
||||
xor x8, x7, x5;
|
||||
RVTEST_SIGUPD(x31,x6,72);
|
||||
RVTEST_SIGUPD(x31,x7,80);
|
||||
RVTEST_SIGUPD(x31,x8,88);
|
||||
|
||||
inst_4:
|
||||
// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
xor x5, x5, x6;
|
||||
aes64ds x7, x5, x6;
|
||||
aes64ds x8, x6, x5;
|
||||
xor x9, x8, x6;
|
||||
RVTEST_SIGUPD(x31,x7,96);
|
||||
RVTEST_SIGUPD(x31,x8,104);
|
||||
RVTEST_SIGUPD(x31,x9,112);
|
||||
|
||||
inst_5:
|
||||
// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
xor x6, x6, x7;
|
||||
aes64ds x8, x6, x7;
|
||||
aes64ds x9, x7, x6;
|
||||
xor x10, x9, x7;
|
||||
RVTEST_SIGUPD(x31,x8,120);
|
||||
RVTEST_SIGUPD(x31,x9,128);
|
||||
RVTEST_SIGUPD(x31,x10,136);
|
||||
|
||||
inst_6:
|
||||
// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
xor x7, x7, x8;
|
||||
aes64ds x9, x7, x8;
|
||||
aes64ds x10, x8, x7;
|
||||
xor x11, x10, x8;
|
||||
RVTEST_SIGUPD(x31,x9,144);
|
||||
RVTEST_SIGUPD(x31,x10,152);
|
||||
RVTEST_SIGUPD(x31,x11,160);
|
||||
|
||||
inst_7:
|
||||
// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
xor x8, x8, x9;
|
||||
aes64ds x10, x8, x9;
|
||||
aes64ds x11, x9, x8;
|
||||
xor x12, x11, x9;
|
||||
RVTEST_SIGUPD(x31,x10,168);
|
||||
RVTEST_SIGUPD(x31,x11,176);
|
||||
RVTEST_SIGUPD(x31,x12,184);
|
||||
|
||||
inst_8:
|
||||
// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
xor x9, x9, x10;
|
||||
aes64ds x11, x9, x10;
|
||||
aes64ds x12, x10, x9;
|
||||
xor x13, x12, x10;
|
||||
RVTEST_SIGUPD(x31,x11,192);
|
||||
RVTEST_SIGUPD(x31,x12,200);
|
||||
RVTEST_SIGUPD(x31,x13,208);
|
||||
|
||||
inst_9:
|
||||
// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
xor x10, x10, x11;
|
||||
aes64ds x12, x10, x11;
|
||||
aes64ds x13, x11, x10;
|
||||
xor x14, x13, x11;
|
||||
RVTEST_SIGUPD(x31,x12,216);
|
||||
RVTEST_SIGUPD(x31,x13,224);
|
||||
RVTEST_SIGUPD(x31,x14,232);
|
||||
|
||||
inst_10:
|
||||
// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
xor x11, x11, x12;
|
||||
aes64ds x13, x11, x12;
|
||||
aes64ds x14, x12, x11;
|
||||
xor x15, x14, x12;
|
||||
RVTEST_SIGUPD(x31,x13,240);
|
||||
RVTEST_SIGUPD(x31,x14,248);
|
||||
RVTEST_SIGUPD(x31,x15,256);
|
||||
|
||||
inst_11:
|
||||
// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
xor x12, x12, x13;
|
||||
aes64ds x14, x12, x13;
|
||||
aes64ds x15, x13, x12;
|
||||
xor x16, x15, x13;
|
||||
RVTEST_SIGUPD(x31,x14,264);
|
||||
RVTEST_SIGUPD(x31,x15,272);
|
||||
RVTEST_SIGUPD(x31,x16,280);
|
||||
|
||||
inst_12:
|
||||
// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
xor x13, x13, x14;
|
||||
aes64ds x15, x13, x14;
|
||||
aes64ds x16, x14, x13;
|
||||
xor x17, x16, x14;
|
||||
RVTEST_SIGUPD(x31,x15,288);
|
||||
RVTEST_SIGUPD(x31,x16,296);
|
||||
RVTEST_SIGUPD(x31,x17,304);
|
||||
|
||||
inst_13:
|
||||
// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
xor x14, x14, x15;
|
||||
aes64ds x16, x14, x15;
|
||||
aes64ds x17, x15, x14;
|
||||
xor x18, x17, x15;
|
||||
RVTEST_SIGUPD(x31,x16,312);
|
||||
RVTEST_SIGUPD(x31,x17,320);
|
||||
RVTEST_SIGUPD(x31,x18,328);
|
||||
|
||||
inst_14:
|
||||
// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
xor x15, x15, x16;
|
||||
aes64ds x17, x15, x16;
|
||||
aes64ds x18, x16, x15;
|
||||
xor x19, x18, x16;
|
||||
RVTEST_SIGUPD(x31,x17,336);
|
||||
RVTEST_SIGUPD(x31,x18,344);
|
||||
RVTEST_SIGUPD(x31,x19,352);
|
||||
|
||||
inst_15:
|
||||
// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
xor x16, x16, x17;
|
||||
aes64ds x18, x16, x17;
|
||||
aes64ds x19, x17, x16;
|
||||
xor x20, x19, x17;
|
||||
RVTEST_SIGUPD(x31,x18,360);
|
||||
RVTEST_SIGUPD(x31,x19,368);
|
||||
RVTEST_SIGUPD(x31,x20,376);
|
||||
|
||||
inst_16:
|
||||
// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
xor x17, x17, x18;
|
||||
aes64ds x19, x17, x18;
|
||||
aes64ds x20, x18, x17;
|
||||
xor x21, x20, x18;
|
||||
RVTEST_SIGUPD(x31,x19,384);
|
||||
RVTEST_SIGUPD(x31,x20,392);
|
||||
RVTEST_SIGUPD(x31,x21,400);
|
||||
|
||||
inst_17:
|
||||
// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
xor x18, x18, x19;
|
||||
aes64ds x20, x18, x19;
|
||||
aes64ds x21, x19, x18;
|
||||
xor x22, x21, x19;
|
||||
RVTEST_SIGUPD(x31,x20,408);
|
||||
RVTEST_SIGUPD(x31,x21,416);
|
||||
RVTEST_SIGUPD(x31,x22,424);
|
||||
|
||||
inst_18:
|
||||
// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
xor x19, x19, x20;
|
||||
aes64ds x21, x19, x20;
|
||||
aes64ds x22, x20, x19;
|
||||
xor x23, x22, x20;
|
||||
RVTEST_SIGUPD(x31,x21,432);
|
||||
RVTEST_SIGUPD(x31,x22,440);
|
||||
RVTEST_SIGUPD(x31,x23,448);
|
||||
|
||||
inst_19:
|
||||
// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
xor x20, x20, x21;
|
||||
aes64ds x22, x20, x21;
|
||||
aes64ds x23, x21, x20;
|
||||
xor x24, x23, x21;
|
||||
RVTEST_SIGUPD(x31,x22,456);
|
||||
RVTEST_SIGUPD(x31,x23,464);
|
||||
RVTEST_SIGUPD(x31,x24,472);
|
||||
|
||||
inst_20:
|
||||
// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
xor x21, x21, x22;
|
||||
aes64ds x23, x21, x22;
|
||||
aes64ds x24, x22, x21;
|
||||
xor x25, x24, x22;
|
||||
RVTEST_SIGUPD(x31,x23,480);
|
||||
RVTEST_SIGUPD(x31,x24,488);
|
||||
RVTEST_SIGUPD(x31,x25,496);
|
||||
|
||||
inst_21:
|
||||
// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
xor x22, x22, x23;
|
||||
aes64ds x24, x22, x23;
|
||||
aes64ds x25, x23, x22;
|
||||
xor x26, x25, x23;
|
||||
RVTEST_SIGUPD(x31,x24,504);
|
||||
RVTEST_SIGUPD(x31,x25,512);
|
||||
RVTEST_SIGUPD(x31,x26,520);
|
||||
|
||||
inst_22:
|
||||
// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
xor x23, x23, x24;
|
||||
aes64ds x25, x23, x24;
|
||||
aes64ds x26, x24, x23;
|
||||
xor x27, x26, x24;
|
||||
RVTEST_SIGUPD(x31,x25,528);
|
||||
RVTEST_SIGUPD(x31,x26,536);
|
||||
RVTEST_SIGUPD(x31,x27,544);
|
||||
|
||||
inst_23:
|
||||
// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
xor x24, x24, x25;
|
||||
aes64ds x26, x24, x25;
|
||||
aes64ds x27, x25, x24;
|
||||
xor x28, x27, x25;
|
||||
RVTEST_SIGUPD(x31,x26,552);
|
||||
RVTEST_SIGUPD(x31,x27,560);
|
||||
RVTEST_SIGUPD(x31,x28,568);
|
||||
|
||||
inst_24:
|
||||
// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
xor x25, x25, x26;
|
||||
aes64ds x27, x25, x26;
|
||||
aes64ds x28, x26, x25;
|
||||
xor x29, x28, x26;
|
||||
RVTEST_SIGUPD(x31,x27,576);
|
||||
RVTEST_SIGUPD(x31,x28,584);
|
||||
RVTEST_SIGUPD(x31,x29,592);
|
||||
|
||||
inst_25:
|
||||
// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64ds & vice versa
|
||||
// opcode: aes64ds; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
xor x26, x26, x27;
|
||||
aes64ds x28, x26, x27;
|
||||
aes64ds x29, x27, x26;
|
||||
xor x30, x29, x27;
|
||||
RVTEST_SIGUPD(x31,x28,600);
|
||||
RVTEST_SIGUPD(x31,x29,608);
|
||||
RVTEST_SIGUPD(x31,x30,616);
|
||||
|
||||
#endif
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x31_1:
|
||||
.fill 78*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,364 +0,0 @@
|
||||
// -----------
|
||||
// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
|
||||
// version : 0.4.5
|
||||
// timestamp : Thu May 20 05:32:05 2021 GMT
|
||||
// usage : riscv_ctg \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
|
||||
// --base-isa rv64i \
|
||||
// --randomize
|
||||
// -----------
|
||||
//
|
||||
// -----------
|
||||
// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// -----------
|
||||
//
|
||||
// This assembly file tests the aes64dsm instruction of the RISC-V extension for the aes64dsm covergroup.
|
||||
//
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64dsm)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64dsm)
|
||||
|
||||
RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKnd.*);def TEST_CASE_1=True;",aes64dsm)
|
||||
|
||||
RVTEST_SIGBASE( x3,signature_x3_1)
|
||||
|
||||
inst_0:
|
||||
// rs1 == rs2 != rd, rs1==x5, rs2==x5, rd==x11, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64dsm ; op1:x5; op2:x5; dest:x11; op1val:0x706050403020100; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64dsm, x11, x5, x5, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x3, 0, x1)
|
||||
|
||||
inst_1:
|
||||
// rs1 == rs2 == rd, rs1==x9, rs2==x9, rd==x9, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64dsm ; op1:x9; op2:x9; dest:x9; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
|
||||
TEST_RR_OP(aes64dsm, x9, x9, x9, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x3, 8, x1)
|
||||
|
||||
inst_2:
|
||||
// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x20, rs2==x11, rd==x15, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
|
||||
// opcode: aes64dsm ; op1:x20; op2:x11; dest:x15; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
|
||||
TEST_RR_OP(aes64dsm, x15, x20, x11, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x3, 16, x1)
|
||||
|
||||
inst_3:
|
||||
// rs1 == rd != rs2, rs1==x7, rs2==x15, rd==x7, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
|
||||
// opcode: aes64dsm ; op1:x7; op2:x15; dest:x7; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
|
||||
TEST_RR_OP(aes64dsm, x7, x7, x15, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x3, 24, x1)
|
||||
|
||||
inst_4:
|
||||
// rs2 == rd != rs1, rs1==x2, rs2==x21, rd==x21, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
|
||||
// opcode: aes64dsm ; op1:x2; op2:x21; dest:x21; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
|
||||
TEST_RR_OP(aes64dsm, x21, x2, x21, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x3, 32, x1)
|
||||
|
||||
inst_5:
|
||||
// rs1==x4, rs2==x31, rd==x5, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
|
||||
// opcode: aes64dsm ; op1:x4; op2:x31; dest:x5; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
|
||||
TEST_RR_OP(aes64dsm, x5, x4, x31, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x3, 40, x1)
|
||||
|
||||
inst_6:
|
||||
// rs1==x0, rs2==x13, rd==x23, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
|
||||
// opcode: aes64dsm ; op1:x0; op2:x13; dest:x23; op1val:0x0; op2val:0x1aa1beebefb902cb
|
||||
TEST_RR_OP(aes64dsm, x23, x0, x13, 0x0000000000000000, 0x0, 0x1aa1beebefb902cb, x3, 48, x1)
|
||||
|
||||
inst_7:
|
||||
// rs1==x21, rs2==x20, rd==x31, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
|
||||
// opcode: aes64dsm ; op1:x21; op2:x20; dest:x31; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
|
||||
TEST_RR_OP(aes64dsm, x31, x21, x20, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x3, 56, x1)
|
||||
|
||||
inst_8:
|
||||
// rs1==x27, rs2==x24, rd==x22, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
|
||||
// opcode: aes64dsm ; op1:x27; op2:x24; dest:x22; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
|
||||
TEST_RR_OP(aes64dsm, x22, x27, x24, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x3, 64, x1)
|
||||
|
||||
inst_9:
|
||||
// rs1==x19, rs2==x26, rd==x12, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
|
||||
// opcode: aes64dsm ; op1:x19; op2:x26; dest:x12; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
|
||||
TEST_RR_OP(aes64dsm, x12, x19, x26, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x3, 72, x1)
|
||||
|
||||
inst_10:
|
||||
// rs1==x24, rs2==x27, rd==x13, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
|
||||
// opcode: aes64dsm ; op1:x24; op2:x27; dest:x13; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
|
||||
TEST_RR_OP(aes64dsm, x13, x24, x27, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x3, 80, x1)
|
||||
|
||||
inst_11:
|
||||
// rs1==x13, rs2==x17, rd==x0, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
|
||||
// opcode: aes64dsm ; op1:x13; op2:x17; dest:x0; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
|
||||
TEST_RR_OP(aes64dsm, x0, x13, x17, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x3, 88, x1)
|
||||
|
||||
inst_12:
|
||||
// rs1==x28, rs2==x10, rd==x30, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
|
||||
// opcode: aes64dsm ; op1:x28; op2:x10; dest:x30; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
|
||||
TEST_RR_OP(aes64dsm, x30, x28, x10, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x3, 96, x1)
|
||||
|
||||
inst_13:
|
||||
// rs1==x14, rs2==x6, rd==x25, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
|
||||
// opcode: aes64dsm ; op1:x14; op2:x6; dest:x25; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
|
||||
TEST_RR_OP(aes64dsm, x25, x14, x6, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x3, 104, x1)
|
||||
|
||||
inst_14:
|
||||
// rs1==x18, rs2==x2, rd==x24, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
|
||||
// opcode: aes64dsm ; op1:x18; op2:x2; dest:x24; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
|
||||
TEST_RR_OP(aes64dsm, x24, x18, x2, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x3, 112, x1)
|
||||
|
||||
inst_15:
|
||||
// rs1==x10, rs2==x29, rd==x2, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
|
||||
// opcode: aes64dsm ; op1:x10; op2:x29; dest:x2; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
|
||||
TEST_RR_OP(aes64dsm, x2, x10, x29, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x3, 120, x1)
|
||||
|
||||
inst_16:
|
||||
// rs1==x15, rs2==x19, rd==x4, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
|
||||
// opcode: aes64dsm ; op1:x15; op2:x19; dest:x4; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
|
||||
TEST_RR_OP(aes64dsm, x4, x15, x19, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x3, 128, x5)
|
||||
|
||||
inst_17:
|
||||
// rs1==x12, rs2==x18, rd==x6, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
|
||||
// opcode: aes64dsm ; op1:x12; op2:x18; dest:x6; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
|
||||
TEST_RR_OP(aes64dsm, x6, x12, x18, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x3, 136, x5)
|
||||
|
||||
inst_18:
|
||||
// rs1==x1, rs2==x8, rd==x20, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
|
||||
// opcode: aes64dsm ; op1:x1; op2:x8; dest:x20; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
|
||||
TEST_RR_OP(aes64dsm, x20, x1, x8, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x3, 144, x5)
|
||||
RVTEST_SIGBASE( x2,signature_x2_0)
|
||||
|
||||
inst_19:
|
||||
// rs1==x11, rs2==x22, rd==x3, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
|
||||
// opcode: aes64dsm ; op1:x11; op2:x22; dest:x3; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
|
||||
TEST_RR_OP(aes64dsm, x3, x11, x22, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x2, 0, x5)
|
||||
|
||||
inst_20:
|
||||
// rs1==x17, rs2==x28, rd==x1, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
|
||||
// opcode: aes64dsm ; op1:x17; op2:x28; dest:x1; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
|
||||
TEST_RR_OP(aes64dsm, x1, x17, x28, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x2, 8, x5)
|
||||
|
||||
inst_21:
|
||||
// rs1==x23, rs2==x12, rd==x29, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
|
||||
// opcode: aes64dsm ; op1:x23; op2:x12; dest:x29; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
|
||||
TEST_RR_OP(aes64dsm, x29, x23, x12, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x2, 16, x5)
|
||||
|
||||
inst_22:
|
||||
// rs1==x22, rs2==x30, rd==x16, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
|
||||
// opcode: aes64dsm ; op1:x22; op2:x30; dest:x16; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
|
||||
TEST_RR_OP(aes64dsm, x16, x22, x30, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x2, 24, x5)
|
||||
|
||||
inst_23:
|
||||
// rs1==x6, rs2==x16, rd==x26, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
|
||||
// opcode: aes64dsm ; op1:x6; op2:x16; dest:x26; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
|
||||
TEST_RR_OP(aes64dsm, x26, x6, x16, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x2, 32, x5)
|
||||
|
||||
inst_24:
|
||||
// rs1==x25, rs2==x7, rd==x19, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
|
||||
// opcode: aes64dsm ; op1:x25; op2:x7; dest:x19; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
|
||||
TEST_RR_OP(aes64dsm, x19, x25, x7, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x2, 40, x5)
|
||||
|
||||
inst_25:
|
||||
// rs1==x29, rs2==x4, rd==x28, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
|
||||
// opcode: aes64dsm ; op1:x29; op2:x4; dest:x28; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
|
||||
TEST_RR_OP(aes64dsm, x28, x29, x4, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x2, 48, x5)
|
||||
|
||||
inst_26:
|
||||
// rs1==x26, rs2==x23, rd==x17, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
|
||||
// opcode: aes64dsm ; op1:x26; op2:x23; dest:x17; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
|
||||
TEST_RR_OP(aes64dsm, x17, x26, x23, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x2, 56, x5)
|
||||
|
||||
inst_27:
|
||||
// rs1==x30, rs2==x3, rd==x8, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
|
||||
// opcode: aes64dsm ; op1:x30; op2:x3; dest:x8; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
|
||||
TEST_RR_OP(aes64dsm, x8, x30, x3, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x2, 64, x5)
|
||||
|
||||
inst_28:
|
||||
// rs1==x8, rs2==x25, rd==x27, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
|
||||
// opcode: aes64dsm ; op1:x8; op2:x25; dest:x27; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
|
||||
TEST_RR_OP(aes64dsm, x27, x8, x25, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x2, 72, x5)
|
||||
|
||||
inst_29:
|
||||
// rs1==x31, rs2==x0, rd==x18, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
|
||||
// opcode: aes64dsm ; op1:x31; op2:x0; dest:x18; op1val:0xbfbebdbcbbbab9b8; op2val:0x0
|
||||
TEST_RR_OP(aes64dsm, x18, x31, x0, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0x0, x2, 80, x5)
|
||||
|
||||
inst_30:
|
||||
// rs1==x16, rs2==x14, rd==x10, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
|
||||
// opcode: aes64dsm ; op1:x16; op2:x14; dest:x10; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
|
||||
TEST_RR_OP(aes64dsm, x10, x16, x14, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x2, 88, x5)
|
||||
|
||||
inst_31:
|
||||
// rs1==x3, rs2==x1, rd==x14, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
|
||||
// opcode: aes64dsm ; op1:x3; op2:x1; dest:x14; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
|
||||
TEST_RR_OP(aes64dsm, x14, x3, x1, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x2, 96, x5)
|
||||
|
||||
inst_32:
|
||||
// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x2, 104, x5)
|
||||
|
||||
inst_33:
|
||||
// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x2, 112, x5)
|
||||
|
||||
inst_34:
|
||||
// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x2, 120, x5)
|
||||
|
||||
inst_35:
|
||||
// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x2, 128, x5)
|
||||
|
||||
inst_36:
|
||||
// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x2, 136, x5)
|
||||
|
||||
inst_37:
|
||||
// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x2, 144, x5)
|
||||
|
||||
inst_38:
|
||||
// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x2, 152, x5)
|
||||
|
||||
inst_39:
|
||||
// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x2, 160, x5)
|
||||
|
||||
inst_40:
|
||||
// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x2, 168, x5)
|
||||
|
||||
inst_41:
|
||||
// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x2, 176, x5)
|
||||
|
||||
inst_42:
|
||||
// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x2, 184, x5)
|
||||
|
||||
inst_43:
|
||||
// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x2, 192, x5)
|
||||
|
||||
inst_44:
|
||||
// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x2, 200, x5)
|
||||
|
||||
inst_45:
|
||||
// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x2, 208, x5)
|
||||
|
||||
inst_46:
|
||||
// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x2, 216, x5)
|
||||
|
||||
inst_47:
|
||||
// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x2, 224, x5)
|
||||
|
||||
inst_48:
|
||||
// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x2, 232, x5)
|
||||
|
||||
inst_49:
|
||||
// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x2, 240, x5)
|
||||
|
||||
inst_50:
|
||||
// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x2, 248, x5)
|
||||
|
||||
inst_51:
|
||||
// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x2, 256, x5)
|
||||
|
||||
inst_52:
|
||||
// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x2, 264, x5)
|
||||
|
||||
inst_53:
|
||||
// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x2, 272, x5)
|
||||
|
||||
inst_54:
|
||||
// rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x2, 280, x5)
|
||||
|
||||
inst_55:
|
||||
// rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x2, 288, x5)
|
||||
|
||||
inst_56:
|
||||
// rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
|
||||
// opcode: aes64dsm ; op1:x10; op2:x11; dest:x12; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
|
||||
TEST_RR_OP(aes64dsm, x12, x10, x11, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x2, 296, x5)
|
||||
#endif
|
||||
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x3_0:
|
||||
.fill 0*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x3_1:
|
||||
.fill 19*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x2_0:
|
||||
.fill 38*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,389 +0,0 @@
|
||||
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64dsm)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64dsm)
|
||||
|
||||
RVTEST_SIGBASE( x31,signature_x31_1)
|
||||
|
||||
inst_0:
|
||||
// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
xor x1, x1, x2;
|
||||
aes64dsm x3, x1, x2;
|
||||
aes64dsm x4, x2, x1;
|
||||
xor x5, x4, x2;
|
||||
RVTEST_SIGUPD(x31,x3,0);
|
||||
RVTEST_SIGUPD(x31,x4,8);
|
||||
RVTEST_SIGUPD(x31,x5,16);
|
||||
|
||||
inst_1:
|
||||
// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
xor x2, x2, x3;
|
||||
aes64dsm x4, x2, x3;
|
||||
aes64dsm x5, x3, x2;
|
||||
xor x6, x5, x3;
|
||||
RVTEST_SIGUPD(x31,x4,24);
|
||||
RVTEST_SIGUPD(x31,x5,32);
|
||||
RVTEST_SIGUPD(x31,x6,40);
|
||||
|
||||
inst_2:
|
||||
// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
xor x3, x3, x4;
|
||||
aes64dsm x5, x3, x4;
|
||||
aes64dsm x6, x4, x3;
|
||||
xor x7, x6, x4;
|
||||
RVTEST_SIGUPD(x31,x5,48);
|
||||
RVTEST_SIGUPD(x31,x6,56);
|
||||
RVTEST_SIGUPD(x31,x7,64);
|
||||
|
||||
inst_3:
|
||||
// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
xor x4, x4, x5;
|
||||
aes64dsm x6, x4, x5;
|
||||
aes64dsm x7, x5, x4;
|
||||
xor x8, x7, x5;
|
||||
RVTEST_SIGUPD(x31,x6,72);
|
||||
RVTEST_SIGUPD(x31,x7,80);
|
||||
RVTEST_SIGUPD(x31,x8,88);
|
||||
|
||||
inst_4:
|
||||
// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
xor x5, x5, x6;
|
||||
aes64dsm x7, x5, x6;
|
||||
aes64dsm x8, x6, x5;
|
||||
xor x9, x8, x6;
|
||||
RVTEST_SIGUPD(x31,x7,96);
|
||||
RVTEST_SIGUPD(x31,x8,104);
|
||||
RVTEST_SIGUPD(x31,x9,112);
|
||||
|
||||
inst_5:
|
||||
// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
xor x6, x6, x7;
|
||||
aes64dsm x8, x6, x7;
|
||||
aes64dsm x9, x7, x6;
|
||||
xor x10, x9, x7;
|
||||
RVTEST_SIGUPD(x31,x8,120);
|
||||
RVTEST_SIGUPD(x31,x9,128);
|
||||
RVTEST_SIGUPD(x31,x10,136);
|
||||
|
||||
inst_6:
|
||||
// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
xor x7, x7, x8;
|
||||
aes64dsm x9, x7, x8;
|
||||
aes64dsm x10, x8, x7;
|
||||
xor x11, x10, x8;
|
||||
RVTEST_SIGUPD(x31,x9,144);
|
||||
RVTEST_SIGUPD(x31,x10,152);
|
||||
RVTEST_SIGUPD(x31,x11,160);
|
||||
|
||||
inst_7:
|
||||
// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
xor x8, x8, x9;
|
||||
aes64dsm x10, x8, x9;
|
||||
aes64dsm x11, x9, x8;
|
||||
xor x12, x11, x9;
|
||||
RVTEST_SIGUPD(x31,x10,168);
|
||||
RVTEST_SIGUPD(x31,x11,176);
|
||||
RVTEST_SIGUPD(x31,x12,184);
|
||||
|
||||
inst_8:
|
||||
// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
xor x9, x9, x10;
|
||||
aes64dsm x11, x9, x10;
|
||||
aes64dsm x12, x10, x9;
|
||||
xor x13, x12, x10;
|
||||
RVTEST_SIGUPD(x31,x11,192);
|
||||
RVTEST_SIGUPD(x31,x12,200);
|
||||
RVTEST_SIGUPD(x31,x13,208);
|
||||
|
||||
inst_9:
|
||||
// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
xor x10, x10, x11;
|
||||
aes64dsm x12, x10, x11;
|
||||
aes64dsm x13, x11, x10;
|
||||
xor x14, x13, x11;
|
||||
RVTEST_SIGUPD(x31,x12,216);
|
||||
RVTEST_SIGUPD(x31,x13,224);
|
||||
RVTEST_SIGUPD(x31,x14,232);
|
||||
|
||||
inst_10:
|
||||
// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
xor x11, x11, x12;
|
||||
aes64dsm x13, x11, x12;
|
||||
aes64dsm x14, x12, x11;
|
||||
xor x15, x14, x12;
|
||||
RVTEST_SIGUPD(x31,x13,240);
|
||||
RVTEST_SIGUPD(x31,x14,248);
|
||||
RVTEST_SIGUPD(x31,x15,256);
|
||||
|
||||
inst_11:
|
||||
// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
xor x12, x12, x13;
|
||||
aes64dsm x14, x12, x13;
|
||||
aes64dsm x15, x13, x12;
|
||||
xor x16, x15, x13;
|
||||
RVTEST_SIGUPD(x31,x14,264);
|
||||
RVTEST_SIGUPD(x31,x15,272);
|
||||
RVTEST_SIGUPD(x31,x16,280);
|
||||
|
||||
inst_12:
|
||||
// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
xor x13, x13, x14;
|
||||
aes64dsm x15, x13, x14;
|
||||
aes64dsm x16, x14, x13;
|
||||
xor x17, x16, x14;
|
||||
RVTEST_SIGUPD(x31,x15,288);
|
||||
RVTEST_SIGUPD(x31,x16,296);
|
||||
RVTEST_SIGUPD(x31,x17,304);
|
||||
|
||||
inst_13:
|
||||
// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
xor x14, x14, x15;
|
||||
aes64dsm x16, x14, x15;
|
||||
aes64dsm x17, x15, x14;
|
||||
xor x18, x17, x15;
|
||||
RVTEST_SIGUPD(x31,x16,312);
|
||||
RVTEST_SIGUPD(x31,x17,320);
|
||||
RVTEST_SIGUPD(x31,x18,328);
|
||||
|
||||
inst_14:
|
||||
// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
xor x15, x15, x16;
|
||||
aes64dsm x17, x15, x16;
|
||||
aes64dsm x18, x16, x15;
|
||||
xor x19, x18, x16;
|
||||
RVTEST_SIGUPD(x31,x17,336);
|
||||
RVTEST_SIGUPD(x31,x18,344);
|
||||
RVTEST_SIGUPD(x31,x19,352);
|
||||
|
||||
inst_15:
|
||||
// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
xor x16, x16, x17;
|
||||
aes64dsm x18, x16, x17;
|
||||
aes64dsm x19, x17, x16;
|
||||
xor x20, x19, x17;
|
||||
RVTEST_SIGUPD(x31,x18,360);
|
||||
RVTEST_SIGUPD(x31,x19,368);
|
||||
RVTEST_SIGUPD(x31,x20,376);
|
||||
|
||||
inst_16:
|
||||
// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
xor x17, x17, x18;
|
||||
aes64dsm x19, x17, x18;
|
||||
aes64dsm x20, x18, x17;
|
||||
xor x21, x20, x18;
|
||||
RVTEST_SIGUPD(x31,x19,384);
|
||||
RVTEST_SIGUPD(x31,x20,392);
|
||||
RVTEST_SIGUPD(x31,x21,400);
|
||||
|
||||
inst_17:
|
||||
// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
xor x18, x18, x19;
|
||||
aes64dsm x20, x18, x19;
|
||||
aes64dsm x21, x19, x18;
|
||||
xor x22, x21, x19;
|
||||
RVTEST_SIGUPD(x31,x20,408);
|
||||
RVTEST_SIGUPD(x31,x21,416);
|
||||
RVTEST_SIGUPD(x31,x22,424);
|
||||
|
||||
inst_18:
|
||||
// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
xor x19, x19, x20;
|
||||
aes64dsm x21, x19, x20;
|
||||
aes64dsm x22, x20, x19;
|
||||
xor x23, x22, x20;
|
||||
RVTEST_SIGUPD(x31,x21,432);
|
||||
RVTEST_SIGUPD(x31,x22,440);
|
||||
RVTEST_SIGUPD(x31,x23,448);
|
||||
|
||||
inst_19:
|
||||
// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
xor x20, x20, x21;
|
||||
aes64dsm x22, x20, x21;
|
||||
aes64dsm x23, x21, x20;
|
||||
xor x24, x23, x21;
|
||||
RVTEST_SIGUPD(x31,x22,456);
|
||||
RVTEST_SIGUPD(x31,x23,464);
|
||||
RVTEST_SIGUPD(x31,x24,472);
|
||||
|
||||
inst_20:
|
||||
// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
xor x21, x21, x22;
|
||||
aes64dsm x23, x21, x22;
|
||||
aes64dsm x24, x22, x21;
|
||||
xor x25, x24, x22;
|
||||
RVTEST_SIGUPD(x31,x23,480);
|
||||
RVTEST_SIGUPD(x31,x24,488);
|
||||
RVTEST_SIGUPD(x31,x25,496);
|
||||
|
||||
inst_21:
|
||||
// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
xor x22, x22, x23;
|
||||
aes64dsm x24, x22, x23;
|
||||
aes64dsm x25, x23, x22;
|
||||
xor x26, x25, x23;
|
||||
RVTEST_SIGUPD(x31,x24,504);
|
||||
RVTEST_SIGUPD(x31,x25,512);
|
||||
RVTEST_SIGUPD(x31,x26,520);
|
||||
|
||||
inst_22:
|
||||
// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
xor x23, x23, x24;
|
||||
aes64dsm x25, x23, x24;
|
||||
aes64dsm x26, x24, x23;
|
||||
xor x27, x26, x24;
|
||||
RVTEST_SIGUPD(x31,x25,528);
|
||||
RVTEST_SIGUPD(x31,x26,536);
|
||||
RVTEST_SIGUPD(x31,x27,544);
|
||||
|
||||
inst_23:
|
||||
// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
xor x24, x24, x25;
|
||||
aes64dsm x26, x24, x25;
|
||||
aes64dsm x27, x25, x24;
|
||||
xor x28, x27, x25;
|
||||
RVTEST_SIGUPD(x31,x26,552);
|
||||
RVTEST_SIGUPD(x31,x27,560);
|
||||
RVTEST_SIGUPD(x31,x28,568);
|
||||
|
||||
inst_24:
|
||||
// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
xor x25, x25, x26;
|
||||
aes64dsm x27, x25, x26;
|
||||
aes64dsm x28, x26, x25;
|
||||
xor x29, x28, x26;
|
||||
RVTEST_SIGUPD(x31,x27,576);
|
||||
RVTEST_SIGUPD(x31,x28,584);
|
||||
RVTEST_SIGUPD(x31,x29,592);
|
||||
|
||||
inst_25:
|
||||
// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64dsm & vice versa
|
||||
// opcode: aes64dsm; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
xor x26, x26, x27;
|
||||
aes64dsm x28, x26, x27;
|
||||
aes64dsm x29, x27, x26;
|
||||
xor x30, x29, x27;
|
||||
RVTEST_SIGUPD(x31,x28,600);
|
||||
RVTEST_SIGUPD(x31,x29,608);
|
||||
RVTEST_SIGUPD(x31,x30,616);
|
||||
|
||||
#endif
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x31_1:
|
||||
.fill 78*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,364 +0,0 @@
|
||||
// -----------
|
||||
// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
|
||||
// version : 0.4.5
|
||||
// timestamp : Thu May 20 05:32:05 2021 GMT
|
||||
// usage : riscv_ctg \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
|
||||
// --base-isa rv64i \
|
||||
// --randomize
|
||||
// -----------
|
||||
//
|
||||
// -----------
|
||||
// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// -----------
|
||||
//
|
||||
// This assembly file tests the aes64es instruction of the RISC-V extension for the aes64es covergroup.
|
||||
//
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64es)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64es)
|
||||
|
||||
RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64es)
|
||||
|
||||
RVTEST_SIGBASE( x6,signature_x6_1)
|
||||
|
||||
inst_0:
|
||||
// rs1 == rs2 != rd, rs1==x8, rs2==x8, rd==x7, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64es ; op1:x8; op2:x8; dest:x7; op1val:0x706050403020100; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64es, x7, x8, x8, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x6, 0, x2)
|
||||
|
||||
inst_1:
|
||||
// rs1 == rs2 == rd, rs1==x19, rs2==x19, rd==x19, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64es ; op1:x19; op2:x19; dest:x19; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
|
||||
TEST_RR_OP(aes64es, x19, x19, x19, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x6, 8, x2)
|
||||
|
||||
inst_2:
|
||||
// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x10, rs2==x20, rd==x26, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
|
||||
// opcode: aes64es ; op1:x10; op2:x20; dest:x26; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
|
||||
TEST_RR_OP(aes64es, x26, x10, x20, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x6, 16, x2)
|
||||
|
||||
inst_3:
|
||||
// rs1 == rd != rs2, rs1==x13, rs2==x7, rd==x13, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
|
||||
// opcode: aes64es ; op1:x13; op2:x7; dest:x13; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
|
||||
TEST_RR_OP(aes64es, x13, x13, x7, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x6, 24, x2)
|
||||
|
||||
inst_4:
|
||||
// rs2 == rd != rs1, rs1==x29, rs2==x14, rd==x14, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
|
||||
// opcode: aes64es ; op1:x29; op2:x14; dest:x14; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
|
||||
TEST_RR_OP(aes64es, x14, x29, x14, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x6, 32, x2)
|
||||
|
||||
inst_5:
|
||||
// rs1==x15, rs2==x22, rd==x1, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
|
||||
// opcode: aes64es ; op1:x15; op2:x22; dest:x1; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
|
||||
TEST_RR_OP(aes64es, x1, x15, x22, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x6, 40, x2)
|
||||
|
||||
inst_6:
|
||||
// rs1==x30, rs2==x13, rd==x21, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
|
||||
// opcode: aes64es ; op1:x30; op2:x13; dest:x21; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
|
||||
TEST_RR_OP(aes64es, x21, x30, x13, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x6, 48, x2)
|
||||
|
||||
inst_7:
|
||||
// rs1==x11, rs2==x9, rd==x20, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
|
||||
// opcode: aes64es ; op1:x11; op2:x9; dest:x20; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
|
||||
TEST_RR_OP(aes64es, x20, x11, x9, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x6, 56, x2)
|
||||
|
||||
inst_8:
|
||||
// rs1==x20, rs2==x12, rd==x17, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
|
||||
// opcode: aes64es ; op1:x20; op2:x12; dest:x17; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
|
||||
TEST_RR_OP(aes64es, x17, x20, x12, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x6, 64, x2)
|
||||
|
||||
inst_9:
|
||||
// rs1==x31, rs2==x29, rd==x8, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
|
||||
// opcode: aes64es ; op1:x31; op2:x29; dest:x8; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
|
||||
TEST_RR_OP(aes64es, x8, x31, x29, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x6, 72, x2)
|
||||
|
||||
inst_10:
|
||||
// rs1==x0, rs2==x15, rd==x23, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
|
||||
// opcode: aes64es ; op1:x0; op2:x15; dest:x23; op1val:0x0; op2val:0x53a66ed1dc80d916
|
||||
TEST_RR_OP(aes64es, x23, x0, x15, 0x0000000000000000, 0x0, 0x53a66ed1dc80d916, x6, 80, x2)
|
||||
|
||||
inst_11:
|
||||
// rs1==x9, rs2==x16, rd==x12, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
|
||||
// opcode: aes64es ; op1:x9; op2:x16; dest:x12; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
|
||||
TEST_RR_OP(aes64es, x12, x9, x16, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x6, 88, x2)
|
||||
|
||||
inst_12:
|
||||
// rs1==x17, rs2==x28, rd==x5, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
|
||||
// opcode: aes64es ; op1:x17; op2:x28; dest:x5; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
|
||||
TEST_RR_OP(aes64es, x5, x17, x28, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x6, 96, x2)
|
||||
|
||||
inst_13:
|
||||
// rs1==x18, rs2==x1, rd==x4, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
|
||||
// opcode: aes64es ; op1:x18; op2:x1; dest:x4; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
|
||||
TEST_RR_OP(aes64es, x4, x18, x1, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x6, 104, x2)
|
||||
|
||||
inst_14:
|
||||
// rs1==x25, rs2==x4, rd==x31, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
|
||||
// opcode: aes64es ; op1:x25; op2:x4; dest:x31; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
|
||||
TEST_RR_OP(aes64es, x31, x25, x4, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x6, 112, x2)
|
||||
|
||||
inst_15:
|
||||
// rs1==x7, rs2==x17, rd==x10, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
|
||||
// opcode: aes64es ; op1:x7; op2:x17; dest:x10; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
|
||||
TEST_RR_OP(aes64es, x10, x7, x17, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x6, 120, x2)
|
||||
|
||||
inst_16:
|
||||
// rs1==x28, rs2==x23, rd==x9, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
|
||||
// opcode: aes64es ; op1:x28; op2:x23; dest:x9; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
|
||||
TEST_RR_OP(aes64es, x9, x28, x23, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x6, 128, x2)
|
||||
|
||||
inst_17:
|
||||
// rs1==x23, rs2==x3, rd==x28, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
|
||||
// opcode: aes64es ; op1:x23; op2:x3; dest:x28; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
|
||||
TEST_RR_OP(aes64es, x28, x23, x3, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x6, 136, x2)
|
||||
|
||||
inst_18:
|
||||
// rs1==x12, rs2==x18, rd==x2, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
|
||||
// opcode: aes64es ; op1:x12; op2:x18; dest:x2; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
|
||||
TEST_RR_OP(aes64es, x2, x12, x18, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x6, 144, x8)
|
||||
RVTEST_SIGBASE( x7,signature_x7_0)
|
||||
|
||||
inst_19:
|
||||
// rs1==x26, rs2==x10, rd==x29, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
|
||||
// opcode: aes64es ; op1:x26; op2:x10; dest:x29; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
|
||||
TEST_RR_OP(aes64es, x29, x26, x10, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x7, 0, x8)
|
||||
|
||||
inst_20:
|
||||
// rs1==x24, rs2==x27, rd==x22, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
|
||||
// opcode: aes64es ; op1:x24; op2:x27; dest:x22; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
|
||||
TEST_RR_OP(aes64es, x22, x24, x27, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x7, 8, x8)
|
||||
|
||||
inst_21:
|
||||
// rs1==x27, rs2==x31, rd==x3, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
|
||||
// opcode: aes64es ; op1:x27; op2:x31; dest:x3; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
|
||||
TEST_RR_OP(aes64es, x3, x27, x31, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x7, 16, x8)
|
||||
|
||||
inst_22:
|
||||
// rs1==x1, rs2==x2, rd==x24, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
|
||||
// opcode: aes64es ; op1:x1; op2:x2; dest:x24; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
|
||||
TEST_RR_OP(aes64es, x24, x1, x2, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x7, 24, x8)
|
||||
|
||||
inst_23:
|
||||
// rs1==x22, rs2==x26, rd==x16, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
|
||||
// opcode: aes64es ; op1:x22; op2:x26; dest:x16; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
|
||||
TEST_RR_OP(aes64es, x16, x22, x26, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x7, 32, x8)
|
||||
|
||||
inst_24:
|
||||
// rs1==x3, rs2==x21, rd==x15, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
|
||||
// opcode: aes64es ; op1:x3; op2:x21; dest:x15; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
|
||||
TEST_RR_OP(aes64es, x15, x3, x21, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x7, 40, x8)
|
||||
|
||||
inst_25:
|
||||
// rs1==x14, rs2==x6, rd==x0, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
|
||||
// opcode: aes64es ; op1:x14; op2:x6; dest:x0; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
|
||||
TEST_RR_OP(aes64es, x0, x14, x6, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x7, 48, x8)
|
||||
|
||||
inst_26:
|
||||
// rs1==x5, rs2==x24, rd==x6, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
|
||||
// opcode: aes64es ; op1:x5; op2:x24; dest:x6; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
|
||||
TEST_RR_OP(aes64es, x6, x5, x24, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x7, 56, x8)
|
||||
|
||||
inst_27:
|
||||
// rs1==x16, rs2==x0, rd==x18, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
|
||||
// opcode: aes64es ; op1:x16; op2:x0; dest:x18; op1val:0xcfcecdcccbcac9c8; op2val:0x0
|
||||
TEST_RR_OP(aes64es, x18, x16, x0, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0x0, x7, 64, x8)
|
||||
|
||||
inst_28:
|
||||
// rs1==x2, rs2==x25, rd==x30, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
|
||||
// opcode: aes64es ; op1:x2; op2:x25; dest:x30; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
|
||||
TEST_RR_OP(aes64es, x30, x2, x25, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x7, 72, x8)
|
||||
|
||||
inst_29:
|
||||
// rs1==x4, rs2==x30, rd==x11, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
|
||||
// opcode: aes64es ; op1:x4; op2:x30; dest:x11; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
|
||||
TEST_RR_OP(aes64es, x11, x4, x30, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x7, 80, x8)
|
||||
|
||||
inst_30:
|
||||
// rs1==x6, rs2==x11, rd==x25, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
|
||||
// opcode: aes64es ; op1:x6; op2:x11; dest:x25; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
|
||||
TEST_RR_OP(aes64es, x25, x6, x11, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x7, 88, x8)
|
||||
|
||||
inst_31:
|
||||
// rs1==x21, rs2==x5, rd==x27, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
|
||||
// opcode: aes64es ; op1:x21; op2:x5; dest:x27; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
|
||||
TEST_RR_OP(aes64es, x27, x21, x5, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x7, 96, x8)
|
||||
|
||||
inst_32:
|
||||
// rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x7, 104, x8)
|
||||
|
||||
inst_33:
|
||||
// rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x7, 112, x8)
|
||||
|
||||
inst_34:
|
||||
// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x7, 120, x8)
|
||||
|
||||
inst_35:
|
||||
// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x7, 128, x8)
|
||||
|
||||
inst_36:
|
||||
// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x7, 136, x8)
|
||||
|
||||
inst_37:
|
||||
// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x7, 144, x8)
|
||||
|
||||
inst_38:
|
||||
// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x7, 152, x8)
|
||||
|
||||
inst_39:
|
||||
// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x7, 160, x8)
|
||||
|
||||
inst_40:
|
||||
// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x7, 168, x8)
|
||||
|
||||
inst_41:
|
||||
// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x7, 176, x8)
|
||||
|
||||
inst_42:
|
||||
// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x7, 184, x8)
|
||||
|
||||
inst_43:
|
||||
// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x7, 192, x8)
|
||||
|
||||
inst_44:
|
||||
// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x7, 200, x8)
|
||||
|
||||
inst_45:
|
||||
// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x7, 208, x8)
|
||||
|
||||
inst_46:
|
||||
// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x7, 216, x8)
|
||||
|
||||
inst_47:
|
||||
// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x7, 224, x8)
|
||||
|
||||
inst_48:
|
||||
// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x7, 232, x8)
|
||||
|
||||
inst_49:
|
||||
// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x7, 240, x8)
|
||||
|
||||
inst_50:
|
||||
// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x7, 248, x8)
|
||||
|
||||
inst_51:
|
||||
// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x7, 256, x8)
|
||||
|
||||
inst_52:
|
||||
// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x7, 264, x8)
|
||||
|
||||
inst_53:
|
||||
// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x7, 272, x8)
|
||||
|
||||
inst_54:
|
||||
// rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x7, 280, x8)
|
||||
|
||||
inst_55:
|
||||
// rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x7, 288, x8)
|
||||
|
||||
inst_56:
|
||||
// rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
|
||||
// opcode: aes64es ; op1:x10; op2:x11; dest:x12; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
|
||||
TEST_RR_OP(aes64es, x12, x10, x11, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x7, 296, x8)
|
||||
#endif
|
||||
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x6_0:
|
||||
.fill 0*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x6_1:
|
||||
.fill 19*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x7_0:
|
||||
.fill 38*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,389 +0,0 @@
|
||||
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64es)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64es)
|
||||
|
||||
RVTEST_SIGBASE( x31,signature_x31_1)
|
||||
|
||||
inst_0:
|
||||
// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
xor x1, x1, x2;
|
||||
aes64es x3, x1, x2;
|
||||
aes64es x4, x2, x1;
|
||||
xor x5, x4, x2;
|
||||
RVTEST_SIGUPD(x31,x3,0);
|
||||
RVTEST_SIGUPD(x31,x4,8);
|
||||
RVTEST_SIGUPD(x31,x5,16);
|
||||
|
||||
inst_1:
|
||||
// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
xor x2, x2, x3;
|
||||
aes64es x4, x2, x3;
|
||||
aes64es x5, x3, x2;
|
||||
xor x6, x5, x3;
|
||||
RVTEST_SIGUPD(x31,x4,24);
|
||||
RVTEST_SIGUPD(x31,x5,32);
|
||||
RVTEST_SIGUPD(x31,x6,40);
|
||||
|
||||
inst_2:
|
||||
// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
xor x3, x3, x4;
|
||||
aes64es x5, x3, x4;
|
||||
aes64es x6, x4, x3;
|
||||
xor x7, x6, x4;
|
||||
RVTEST_SIGUPD(x31,x5,48);
|
||||
RVTEST_SIGUPD(x31,x6,56);
|
||||
RVTEST_SIGUPD(x31,x7,64);
|
||||
|
||||
inst_3:
|
||||
// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
xor x4, x4, x5;
|
||||
aes64es x6, x4, x5;
|
||||
aes64es x7, x5, x4;
|
||||
xor x8, x7, x5;
|
||||
RVTEST_SIGUPD(x31,x6,72);
|
||||
RVTEST_SIGUPD(x31,x7,80);
|
||||
RVTEST_SIGUPD(x31,x8,88);
|
||||
|
||||
inst_4:
|
||||
// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
xor x5, x5, x6;
|
||||
aes64es x7, x5, x6;
|
||||
aes64es x8, x6, x5;
|
||||
xor x9, x8, x6;
|
||||
RVTEST_SIGUPD(x31,x7,96);
|
||||
RVTEST_SIGUPD(x31,x8,104);
|
||||
RVTEST_SIGUPD(x31,x9,112);
|
||||
|
||||
inst_5:
|
||||
// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
xor x6, x6, x7;
|
||||
aes64es x8, x6, x7;
|
||||
aes64es x9, x7, x6;
|
||||
xor x10, x9, x7;
|
||||
RVTEST_SIGUPD(x31,x8,120);
|
||||
RVTEST_SIGUPD(x31,x9,128);
|
||||
RVTEST_SIGUPD(x31,x10,136);
|
||||
|
||||
inst_6:
|
||||
// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
xor x7, x7, x8;
|
||||
aes64es x9, x7, x8;
|
||||
aes64es x10, x8, x7;
|
||||
xor x11, x10, x8;
|
||||
RVTEST_SIGUPD(x31,x9,144);
|
||||
RVTEST_SIGUPD(x31,x10,152);
|
||||
RVTEST_SIGUPD(x31,x11,160);
|
||||
|
||||
inst_7:
|
||||
// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
xor x8, x8, x9;
|
||||
aes64es x10, x8, x9;
|
||||
aes64es x11, x9, x8;
|
||||
xor x12, x11, x9;
|
||||
RVTEST_SIGUPD(x31,x10,168);
|
||||
RVTEST_SIGUPD(x31,x11,176);
|
||||
RVTEST_SIGUPD(x31,x12,184);
|
||||
|
||||
inst_8:
|
||||
// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
xor x9, x9, x10;
|
||||
aes64es x11, x9, x10;
|
||||
aes64es x12, x10, x9;
|
||||
xor x13, x12, x10;
|
||||
RVTEST_SIGUPD(x31,x11,192);
|
||||
RVTEST_SIGUPD(x31,x12,200);
|
||||
RVTEST_SIGUPD(x31,x13,208);
|
||||
|
||||
inst_9:
|
||||
// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
xor x10, x10, x11;
|
||||
aes64es x12, x10, x11;
|
||||
aes64es x13, x11, x10;
|
||||
xor x14, x13, x11;
|
||||
RVTEST_SIGUPD(x31,x12,216);
|
||||
RVTEST_SIGUPD(x31,x13,224);
|
||||
RVTEST_SIGUPD(x31,x14,232);
|
||||
|
||||
inst_10:
|
||||
// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
xor x11, x11, x12;
|
||||
aes64es x13, x11, x12;
|
||||
aes64es x14, x12, x11;
|
||||
xor x15, x14, x12;
|
||||
RVTEST_SIGUPD(x31,x13,240);
|
||||
RVTEST_SIGUPD(x31,x14,248);
|
||||
RVTEST_SIGUPD(x31,x15,256);
|
||||
|
||||
inst_11:
|
||||
// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
xor x12, x12, x13;
|
||||
aes64es x14, x12, x13;
|
||||
aes64es x15, x13, x12;
|
||||
xor x16, x15, x13;
|
||||
RVTEST_SIGUPD(x31,x14,264);
|
||||
RVTEST_SIGUPD(x31,x15,272);
|
||||
RVTEST_SIGUPD(x31,x16,280);
|
||||
|
||||
inst_12:
|
||||
// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
xor x13, x13, x14;
|
||||
aes64es x15, x13, x14;
|
||||
aes64es x16, x14, x13;
|
||||
xor x17, x16, x14;
|
||||
RVTEST_SIGUPD(x31,x15,288);
|
||||
RVTEST_SIGUPD(x31,x16,296);
|
||||
RVTEST_SIGUPD(x31,x17,304);
|
||||
|
||||
inst_13:
|
||||
// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
xor x14, x14, x15;
|
||||
aes64es x16, x14, x15;
|
||||
aes64es x17, x15, x14;
|
||||
xor x18, x17, x15;
|
||||
RVTEST_SIGUPD(x31,x16,312);
|
||||
RVTEST_SIGUPD(x31,x17,320);
|
||||
RVTEST_SIGUPD(x31,x18,328);
|
||||
|
||||
inst_14:
|
||||
// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
xor x15, x15, x16;
|
||||
aes64es x17, x15, x16;
|
||||
aes64es x18, x16, x15;
|
||||
xor x19, x18, x16;
|
||||
RVTEST_SIGUPD(x31,x17,336);
|
||||
RVTEST_SIGUPD(x31,x18,344);
|
||||
RVTEST_SIGUPD(x31,x19,352);
|
||||
|
||||
inst_15:
|
||||
// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
xor x16, x16, x17;
|
||||
aes64es x18, x16, x17;
|
||||
aes64es x19, x17, x16;
|
||||
xor x20, x19, x17;
|
||||
RVTEST_SIGUPD(x31,x18,360);
|
||||
RVTEST_SIGUPD(x31,x19,368);
|
||||
RVTEST_SIGUPD(x31,x20,376);
|
||||
|
||||
inst_16:
|
||||
// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
xor x17, x17, x18;
|
||||
aes64es x19, x17, x18;
|
||||
aes64es x20, x18, x17;
|
||||
xor x21, x20, x18;
|
||||
RVTEST_SIGUPD(x31,x19,384);
|
||||
RVTEST_SIGUPD(x31,x20,392);
|
||||
RVTEST_SIGUPD(x31,x21,400);
|
||||
|
||||
inst_17:
|
||||
// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
xor x18, x18, x19;
|
||||
aes64es x20, x18, x19;
|
||||
aes64es x21, x19, x18;
|
||||
xor x22, x21, x19;
|
||||
RVTEST_SIGUPD(x31,x20,408);
|
||||
RVTEST_SIGUPD(x31,x21,416);
|
||||
RVTEST_SIGUPD(x31,x22,424);
|
||||
|
||||
inst_18:
|
||||
// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
xor x19, x19, x20;
|
||||
aes64es x21, x19, x20;
|
||||
aes64es x22, x20, x19;
|
||||
xor x23, x22, x20;
|
||||
RVTEST_SIGUPD(x31,x21,432);
|
||||
RVTEST_SIGUPD(x31,x22,440);
|
||||
RVTEST_SIGUPD(x31,x23,448);
|
||||
|
||||
inst_19:
|
||||
// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
xor x20, x20, x21;
|
||||
aes64es x22, x20, x21;
|
||||
aes64es x23, x21, x20;
|
||||
xor x24, x23, x21;
|
||||
RVTEST_SIGUPD(x31,x22,456);
|
||||
RVTEST_SIGUPD(x31,x23,464);
|
||||
RVTEST_SIGUPD(x31,x24,472);
|
||||
|
||||
inst_20:
|
||||
// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
xor x21, x21, x22;
|
||||
aes64es x23, x21, x22;
|
||||
aes64es x24, x22, x21;
|
||||
xor x25, x24, x22;
|
||||
RVTEST_SIGUPD(x31,x23,480);
|
||||
RVTEST_SIGUPD(x31,x24,488);
|
||||
RVTEST_SIGUPD(x31,x25,496);
|
||||
|
||||
inst_21:
|
||||
// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
xor x22, x22, x23;
|
||||
aes64es x24, x22, x23;
|
||||
aes64es x25, x23, x22;
|
||||
xor x26, x25, x23;
|
||||
RVTEST_SIGUPD(x31,x24,504);
|
||||
RVTEST_SIGUPD(x31,x25,512);
|
||||
RVTEST_SIGUPD(x31,x26,520);
|
||||
|
||||
inst_22:
|
||||
// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
xor x23, x23, x24;
|
||||
aes64es x25, x23, x24;
|
||||
aes64es x26, x24, x23;
|
||||
xor x27, x26, x24;
|
||||
RVTEST_SIGUPD(x31,x25,528);
|
||||
RVTEST_SIGUPD(x31,x26,536);
|
||||
RVTEST_SIGUPD(x31,x27,544);
|
||||
|
||||
inst_23:
|
||||
// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
xor x24, x24, x25;
|
||||
aes64es x26, x24, x25;
|
||||
aes64es x27, x25, x24;
|
||||
xor x28, x27, x25;
|
||||
RVTEST_SIGUPD(x31,x26,552);
|
||||
RVTEST_SIGUPD(x31,x27,560);
|
||||
RVTEST_SIGUPD(x31,x28,568);
|
||||
|
||||
inst_24:
|
||||
// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
xor x25, x25, x26;
|
||||
aes64es x27, x25, x26;
|
||||
aes64es x28, x26, x25;
|
||||
xor x29, x28, x26;
|
||||
RVTEST_SIGUPD(x31,x27,576);
|
||||
RVTEST_SIGUPD(x31,x28,584);
|
||||
RVTEST_SIGUPD(x31,x29,592);
|
||||
|
||||
inst_25:
|
||||
// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64es & vice versa
|
||||
// opcode: aes64es; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
xor x26, x26, x27;
|
||||
aes64es x28, x26, x27;
|
||||
aes64es x29, x27, x26;
|
||||
xor x30, x29, x27;
|
||||
RVTEST_SIGUPD(x31,x28,600);
|
||||
RVTEST_SIGUPD(x31,x29,608);
|
||||
RVTEST_SIGUPD(x31,x30,616);
|
||||
|
||||
#endif
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x31_1:
|
||||
.fill 78*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,364 +0,0 @@
|
||||
// -----------
|
||||
// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
|
||||
// version : 0.4.5
|
||||
// timestamp : Thu May 20 05:32:05 2021 GMT
|
||||
// usage : riscv_ctg \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
|
||||
// --base-isa rv64i \
|
||||
// --randomize
|
||||
// -----------
|
||||
//
|
||||
// -----------
|
||||
// Copyright (c) 2021. Indian Institute of Technology Madras. All rights reserved.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// -----------
|
||||
//
|
||||
// This assembly file tests the aes64esm instruction of the RISC-V extension for the aes64esm covergroup.
|
||||
//
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64esm)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64esm)
|
||||
|
||||
RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64esm)
|
||||
|
||||
RVTEST_SIGBASE( x10,signature_x10_1)
|
||||
|
||||
inst_0:
|
||||
// rs1 == rs2 != rd, rs1==x18, rs2==x18, rd==x29, rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64esm ; op1:x18; op2:x18; dest:x29; op1val:0x706050403020100; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64esm, x29, x18, x18, 0x0000000000000000, 0x706050403020100, 0x706050403020100, x10, 0, x4)
|
||||
|
||||
inst_1:
|
||||
// rs1 == rs2 == rd, rs1==x9, rs2==x9, rd==x9, rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64esm ; op1:x9; op2:x9; dest:x9; op1val:0x6af29145404fd8ed; op2val:0x6af29145404fd8ed
|
||||
TEST_RR_OP(aes64esm, x9, x9, x9, 0x0000000000000000, 0x6af29145404fd8ed, 0x6af29145404fd8ed, x10, 8, x4)
|
||||
|
||||
inst_2:
|
||||
// rs1 != rs2 and rs1 != rd and rs2 != rd, rs1==x21, rs2==x19, rd==x7, rs1_val == 0x6d23c0488a6019c1 and rs2_val == 0x860bdaad7447a088
|
||||
// opcode: aes64esm ; op1:x21; op2:x19; dest:x7; op1val:0x6d23c0488a6019c1; op2val:0x860bdaad7447a088
|
||||
TEST_RR_OP(aes64esm, x7, x21, x19, 0x0000000000000000, 0x6d23c0488a6019c1, 0x860bdaad7447a088, x10, 16, x4)
|
||||
|
||||
inst_3:
|
||||
// rs1 == rd != rs2, rs1==x22, rs2==x7, rd==x22, rs1_val == 0x1f7d946f17168ab3 and rs2_val == 0x66eae3d9bbb4f560
|
||||
// opcode: aes64esm ; op1:x22; op2:x7; dest:x22; op1val:0x1f7d946f17168ab3; op2val:0x66eae3d9bbb4f560
|
||||
TEST_RR_OP(aes64esm, x22, x22, x7, 0x0000000000000000, 0x1f7d946f17168ab3, 0x66eae3d9bbb4f560, x10, 24, x4)
|
||||
|
||||
inst_4:
|
||||
// rs2 == rd != rs1, rs1==x0, rs2==x26, rd==x26, rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
|
||||
// opcode: aes64esm ; op1:x0; op2:x26; dest:x26; op1val:0x0; op2val:0x1826a804284fe16c
|
||||
TEST_RR_OP(aes64esm, x26, x0, x26, 0x0000000000000000, 0x0, 0x1826a804284fe16c, x10, 32, x4)
|
||||
|
||||
inst_5:
|
||||
// rs1==x12, rs2==x11, rd==x24, rs1_val == 0xb694de26ad9e5431 and rs2_val == 0x293f9f6071fad878
|
||||
// opcode: aes64esm ; op1:x12; op2:x11; dest:x24; op1val:0xb694de26ad9e5431; op2val:0x293f9f6071fad878
|
||||
TEST_RR_OP(aes64esm, x24, x12, x11, 0x0000000000000000, 0xb694de26ad9e5431, 0x293f9f6071fad878, x10, 40, x4)
|
||||
|
||||
inst_6:
|
||||
// rs1==x23, rs2==x3, rd==x6, rs1_val == 0x987daa20b858e304 and rs2_val == 0x1aa1beebefb902cb
|
||||
// opcode: aes64esm ; op1:x23; op2:x3; dest:x6; op1val:0x987daa20b858e304; op2val:0x1aa1beebefb902cb
|
||||
TEST_RR_OP(aes64esm, x6, x23, x3, 0x0000000000000000, 0x987daa20b858e304, 0x1aa1beebefb902cb, x10, 48, x4)
|
||||
|
||||
inst_7:
|
||||
// rs1==x3, rs2==x14, rd==x0, rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
|
||||
// opcode: aes64esm ; op1:x3; op2:x14; dest:x0; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
|
||||
TEST_RR_OP(aes64esm, x0, x3, x14, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x10, 56, x4)
|
||||
|
||||
inst_8:
|
||||
// rs1==x11, rs2==x20, rd==x1, rs1_val == 0xe2eaf4a09869be8c and rs2_val == 0x5b730cad91766f62
|
||||
// opcode: aes64esm ; op1:x11; op2:x20; dest:x1; op1val:0xe2eaf4a09869be8c; op2val:0x5b730cad91766f62
|
||||
TEST_RR_OP(aes64esm, x1, x11, x20, 0x0000000000000000, 0xe2eaf4a09869be8c, 0x5b730cad91766f62, x10, 64, x4)
|
||||
|
||||
inst_9:
|
||||
// rs1==x5, rs2==x30, rd==x23, rs1_val == 0xc0fe15dd0df9564b and rs2_val == 0xb22bbf7eb4c858fb
|
||||
// opcode: aes64esm ; op1:x5; op2:x30; dest:x23; op1val:0xc0fe15dd0df9564b; op2val:0xb22bbf7eb4c858fb
|
||||
TEST_RR_OP(aes64esm, x23, x5, x30, 0x0000000000000000, 0xc0fe15dd0df9564b, 0xb22bbf7eb4c858fb, x10, 72, x4)
|
||||
|
||||
inst_10:
|
||||
// rs1==x19, rs2==x12, rd==x27, rs1_val == 0x4113ee60952acffe and rs2_val == 0x53a66ed1dc80d916
|
||||
// opcode: aes64esm ; op1:x19; op2:x12; dest:x27; op1val:0x4113ee60952acffe; op2val:0x53a66ed1dc80d916
|
||||
TEST_RR_OP(aes64esm, x27, x19, x12, 0x0000000000000000, 0x4113ee60952acffe, 0x53a66ed1dc80d916, x10, 80, x4)
|
||||
|
||||
inst_11:
|
||||
// rs1==x29, rs2==x21, rd==x19, rs1_val == 0x40a5ff526f38a9c7 and rs2_val == 0xb6f9706fb4f741aa
|
||||
// opcode: aes64esm ; op1:x29; op2:x21; dest:x19; op1val:0x40a5ff526f38a9c7; op2val:0xb6f9706fb4f741aa
|
||||
TEST_RR_OP(aes64esm, x19, x29, x21, 0x0000000000000000, 0x40a5ff526f38a9c7, 0xb6f9706fb4f741aa, x10, 88, x4)
|
||||
|
||||
inst_12:
|
||||
// rs1==x24, rs2==x27, rd==x21, rs1_val == 0x9bedfe390d6ddd9d and rs2_val == 0xd05668ae0fdb82bc
|
||||
// opcode: aes64esm ; op1:x24; op2:x27; dest:x21; op1val:0x9bedfe390d6ddd9d; op2val:0xd05668ae0fdb82bc
|
||||
TEST_RR_OP(aes64esm, x21, x24, x27, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0xd05668ae0fdb82bc, x10, 96, x4)
|
||||
|
||||
inst_13:
|
||||
// rs1==x8, rs2==x2, rd==x20, rs1_val == 0xd75739f82ac177c6 and rs2_val == 0xaa6bb2bde9ed477d
|
||||
// opcode: aes64esm ; op1:x8; op2:x2; dest:x20; op1val:0xd75739f82ac177c6; op2val:0xaa6bb2bde9ed477d
|
||||
TEST_RR_OP(aes64esm, x20, x8, x2, 0x0000000000000000, 0xd75739f82ac177c6, 0xaa6bb2bde9ed477d, x10, 104, x4)
|
||||
|
||||
inst_14:
|
||||
// rs1==x14, rs2==x1, rd==x15, rs1_val == 0x9a4e9ef10171f4df and rs2_val == 0x299c3bcf90efb625
|
||||
// opcode: aes64esm ; op1:x14; op2:x1; dest:x15; op1val:0x9a4e9ef10171f4df; op2val:0x299c3bcf90efb625
|
||||
TEST_RR_OP(aes64esm, x15, x14, x1, 0x0000000000000000, 0x9a4e9ef10171f4df, 0x299c3bcf90efb625, x10, 112, x4)
|
||||
|
||||
inst_15:
|
||||
// rs1==x25, rs2==x6, rd==x8, rs1_val == 0xd169a3f8cad5e297 and rs2_val == 0x1fc493caa371db42
|
||||
// opcode: aes64esm ; op1:x25; op2:x6; dest:x8; op1val:0xd169a3f8cad5e297; op2val:0x1fc493caa371db42
|
||||
TEST_RR_OP(aes64esm, x8, x25, x6, 0x0000000000000000, 0xd169a3f8cad5e297, 0x1fc493caa371db42, x10, 120, x4)
|
||||
|
||||
inst_16:
|
||||
// rs1==x6, rs2==x22, rd==x28, rs1_val == 0xd5b9fe5cf69bdcf3 and rs2_val == 0xf4c30307672f666d
|
||||
// opcode: aes64esm ; op1:x6; op2:x22; dest:x28; op1val:0xd5b9fe5cf69bdcf3; op2val:0xf4c30307672f666d
|
||||
TEST_RR_OP(aes64esm, x28, x6, x22, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0xf4c30307672f666d, x10, 128, x4)
|
||||
|
||||
inst_17:
|
||||
// rs1==x31, rs2==x17, rd==x14, rs1_val == 0xe4921bf73047c198 and rs2_val == 0xa0569d765ebc64cb
|
||||
// opcode: aes64esm ; op1:x31; op2:x17; dest:x14; op1val:0xe4921bf73047c198; op2val:0xa0569d765ebc64cb
|
||||
TEST_RR_OP(aes64esm, x14, x31, x17, 0x0000000000000000, 0xe4921bf73047c198, 0xa0569d765ebc64cb, x10, 136, x4)
|
||||
|
||||
inst_18:
|
||||
// rs1==x15, rs2==x8, rd==x4, rs1_val == 0xfcc1b543c49cd65b and rs2_val == 0x2daf9ac7f5faf207
|
||||
// opcode: aes64esm ; op1:x15; op2:x8; dest:x4; op1val:0xfcc1b543c49cd65b; op2val:0x2daf9ac7f5faf207
|
||||
TEST_RR_OP(aes64esm, x4, x15, x8, 0x0000000000000000, 0xfcc1b543c49cd65b, 0x2daf9ac7f5faf207, x10, 144, x9)
|
||||
RVTEST_SIGBASE( x6,signature_x6_0)
|
||||
|
||||
inst_19:
|
||||
// rs1==x30, rs2==x13, rd==x12, rs1_val == 0x436f40f274b8de87 and rs2_val == 0x3459294ef273b44c
|
||||
// opcode: aes64esm ; op1:x30; op2:x13; dest:x12; op1val:0x436f40f274b8de87; op2val:0x3459294ef273b44c
|
||||
TEST_RR_OP(aes64esm, x12, x30, x13, 0x0000000000000000, 0x436f40f274b8de87, 0x3459294ef273b44c, x6, 0, x9)
|
||||
|
||||
inst_20:
|
||||
// rs1==x1, rs2==x23, rd==x18, rs1_val == 0x75a3adb3254a9493 and rs2_val == 0xc5521660f3a3c571
|
||||
// opcode: aes64esm ; op1:x1; op2:x23; dest:x18; op1val:0x75a3adb3254a9493; op2val:0xc5521660f3a3c571
|
||||
TEST_RR_OP(aes64esm, x18, x1, x23, 0x0000000000000000, 0x75a3adb3254a9493, 0xc5521660f3a3c571, x6, 8, x9)
|
||||
|
||||
inst_21:
|
||||
// rs1==x10, rs2==x28, rd==x31, rs1_val == 0xfffefdfcfbfaf9f8 and rs2_val == 0xf7f6f5f4f3f2f1f0
|
||||
// opcode: aes64esm ; op1:x10; op2:x28; dest:x31; op1val:0xfffefdfcfbfaf9f8; op2val:0xf7f6f5f4f3f2f1f0
|
||||
TEST_RR_OP(aes64esm, x31, x10, x28, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xf7f6f5f4f3f2f1f0, x6, 16, x9)
|
||||
|
||||
inst_22:
|
||||
// rs1==x4, rs2==x0, rd==x30, rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
|
||||
// opcode: aes64esm ; op1:x4; op2:x0; dest:x30; op1val:0xf7f6f5f4f3f2f1f0; op2val:0x0
|
||||
TEST_RR_OP(aes64esm, x30, x4, x0, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0x0, x6, 24, x9)
|
||||
|
||||
inst_23:
|
||||
// rs1==x2, rs2==x5, rd==x3, rs1_val == 0xefeeedecebeae9e8 and rs2_val == 0xe7e6e5e4e3e2e1e0
|
||||
// opcode: aes64esm ; op1:x2; op2:x5; dest:x3; op1val:0xefeeedecebeae9e8; op2val:0xe7e6e5e4e3e2e1e0
|
||||
TEST_RR_OP(aes64esm, x3, x2, x5, 0x0000000000000000, 0xefeeedecebeae9e8, 0xe7e6e5e4e3e2e1e0, x6, 32, x9)
|
||||
|
||||
inst_24:
|
||||
// rs1==x16, rs2==x15, rd==x5, rs1_val == 0xe7e6e5e4e3e2e1e0 and rs2_val == 0xefeeedecebeae9e8
|
||||
// opcode: aes64esm ; op1:x16; op2:x15; dest:x5; op1val:0xe7e6e5e4e3e2e1e0; op2val:0xefeeedecebeae9e8
|
||||
TEST_RR_OP(aes64esm, x5, x16, x15, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xefeeedecebeae9e8, x6, 40, x9)
|
||||
|
||||
inst_25:
|
||||
// rs1==x20, rs2==x31, rd==x25, rs1_val == 0xdfdedddcdbdad9d8 and rs2_val == 0xd7d6d5d4d3d2d1d0
|
||||
// opcode: aes64esm ; op1:x20; op2:x31; dest:x25; op1val:0xdfdedddcdbdad9d8; op2val:0xd7d6d5d4d3d2d1d0
|
||||
TEST_RR_OP(aes64esm, x25, x20, x31, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xd7d6d5d4d3d2d1d0, x6, 48, x9)
|
||||
|
||||
inst_26:
|
||||
// rs1==x7, rs2==x25, rd==x13, rs1_val == 0xd7d6d5d4d3d2d1d0 and rs2_val == 0xdfdedddcdbdad9d8
|
||||
// opcode: aes64esm ; op1:x7; op2:x25; dest:x13; op1val:0xd7d6d5d4d3d2d1d0; op2val:0xdfdedddcdbdad9d8
|
||||
TEST_RR_OP(aes64esm, x13, x7, x25, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xdfdedddcdbdad9d8, x6, 56, x9)
|
||||
|
||||
inst_27:
|
||||
// rs1==x13, rs2==x4, rd==x2, rs1_val == 0xcfcecdcccbcac9c8 and rs2_val == 0xc7c6c5c4c3c2c1c0
|
||||
// opcode: aes64esm ; op1:x13; op2:x4; dest:x2; op1val:0xcfcecdcccbcac9c8; op2val:0xc7c6c5c4c3c2c1c0
|
||||
TEST_RR_OP(aes64esm, x2, x13, x4, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xc7c6c5c4c3c2c1c0, x6, 64, x9)
|
||||
|
||||
inst_28:
|
||||
// rs1==x28, rs2==x10, rd==x11, rs1_val == 0xc7c6c5c4c3c2c1c0 and rs2_val == 0xcfcecdcccbcac9c8
|
||||
// opcode: aes64esm ; op1:x28; op2:x10; dest:x11; op1val:0xc7c6c5c4c3c2c1c0; op2val:0xcfcecdcccbcac9c8
|
||||
TEST_RR_OP(aes64esm, x11, x28, x10, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xcfcecdcccbcac9c8, x6, 72, x9)
|
||||
|
||||
inst_29:
|
||||
// rs1==x17, rs2==x29, rd==x10, rs1_val == 0xbfbebdbcbbbab9b8 and rs2_val == 0xb7b6b5b4b3b2b1b0
|
||||
// opcode: aes64esm ; op1:x17; op2:x29; dest:x10; op1val:0xbfbebdbcbbbab9b8; op2val:0xb7b6b5b4b3b2b1b0
|
||||
TEST_RR_OP(aes64esm, x10, x17, x29, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xb7b6b5b4b3b2b1b0, x6, 80, x9)
|
||||
|
||||
inst_30:
|
||||
// rs1==x27, rs2==x24, rd==x17, rs1_val == 0xb7b6b5b4b3b2b1b0 and rs2_val == 0xbfbebdbcbbbab9b8
|
||||
// opcode: aes64esm ; op1:x27; op2:x24; dest:x17; op1val:0xb7b6b5b4b3b2b1b0; op2val:0xbfbebdbcbbbab9b8
|
||||
TEST_RR_OP(aes64esm, x17, x27, x24, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xbfbebdbcbbbab9b8, x6, 88, x9)
|
||||
|
||||
inst_31:
|
||||
// rs1==x26, rs1_val == 0xafaeadacabaaa9a8 and rs2_val == 0xa7a6a5a4a3a2a1a0
|
||||
// opcode: aes64esm ; op1:x26; op2:x17; dest:x2; op1val:0xafaeadacabaaa9a8; op2val:0xa7a6a5a4a3a2a1a0
|
||||
TEST_RR_OP(aes64esm, x2, x26, x17, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa7a6a5a4a3a2a1a0, x6, 96, x9)
|
||||
|
||||
inst_32:
|
||||
// rs2==x16, rs1_val == 0xa7a6a5a4a3a2a1a0 and rs2_val == 0xafaeadacabaaa9a8
|
||||
// opcode: aes64esm ; op1:x23; op2:x16; dest:x11; op1val:0xa7a6a5a4a3a2a1a0; op2val:0xafaeadacabaaa9a8
|
||||
TEST_RR_OP(aes64esm, x11, x23, x16, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xafaeadacabaaa9a8, x6, 104, x9)
|
||||
|
||||
inst_33:
|
||||
// rd==x16, rs1_val == 0x9f9e9d9c9b9a9998 and rs2_val == 0x9796959493929190
|
||||
// opcode: aes64esm ; op1:x25; op2:x19; dest:x16; op1val:0x9f9e9d9c9b9a9998; op2val:0x9796959493929190
|
||||
TEST_RR_OP(aes64esm, x16, x25, x19, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0x9796959493929190, x6, 112, x9)
|
||||
|
||||
inst_34:
|
||||
// rs1_val == 0x9796959493929190 and rs2_val == 0x9f9e9d9c9b9a9998
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x9796959493929190; op2val:0x9f9e9d9c9b9a9998
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x9796959493929190, 0x9f9e9d9c9b9a9998, x6, 120, x9)
|
||||
|
||||
inst_35:
|
||||
// rs1_val == 0x8f8e8d8c8b8a8988 and rs2_val == 0x8786858483828180
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x8f8e8d8c8b8a8988; op2val:0x8786858483828180
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0x8786858483828180, x6, 128, x9)
|
||||
|
||||
inst_36:
|
||||
// rs1_val == 0x8786858483828180 and rs2_val == 0x8f8e8d8c8b8a8988
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x8786858483828180; op2val:0x8f8e8d8c8b8a8988
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x8786858483828180, 0x8f8e8d8c8b8a8988, x6, 136, x9)
|
||||
|
||||
inst_37:
|
||||
// rs1_val == 0x7f7e7d7c7b7a7978 and rs2_val == 0x7776757473727170
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x7f7e7d7c7b7a7978; op2val:0x7776757473727170
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0x7776757473727170, x6, 144, x9)
|
||||
|
||||
inst_38:
|
||||
// rs1_val == 0x7776757473727170 and rs2_val == 0x7f7e7d7c7b7a7978
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x7776757473727170; op2val:0x7f7e7d7c7b7a7978
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x7776757473727170, 0x7f7e7d7c7b7a7978, x6, 152, x9)
|
||||
|
||||
inst_39:
|
||||
// rs1_val == 0x6f6e6d6c6b6a6968 and rs2_val == 0x6766656463626160
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x6f6e6d6c6b6a6968; op2val:0x6766656463626160
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0x6766656463626160, x6, 160, x9)
|
||||
|
||||
inst_40:
|
||||
// rs1_val == 0x6766656463626160 and rs2_val == 0x6f6e6d6c6b6a6968
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x6766656463626160; op2val:0x6f6e6d6c6b6a6968
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x6766656463626160, 0x6f6e6d6c6b6a6968, x6, 168, x9)
|
||||
|
||||
inst_41:
|
||||
// rs1_val == 0x5f5e5d5c5b5a5958 and rs2_val == 0x5756555453525150
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x5f5e5d5c5b5a5958; op2val:0x5756555453525150
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0x5756555453525150, x6, 176, x9)
|
||||
|
||||
inst_42:
|
||||
// rs1_val == 0x5756555453525150 and rs2_val == 0x5f5e5d5c5b5a5958
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x5756555453525150; op2val:0x5f5e5d5c5b5a5958
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x5756555453525150, 0x5f5e5d5c5b5a5958, x6, 184, x9)
|
||||
|
||||
inst_43:
|
||||
// rs1_val == 0x4f4e4d4c4b4a4948 and rs2_val == 0x4746454443424140
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x4f4e4d4c4b4a4948; op2val:0x4746454443424140
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0x4746454443424140, x6, 192, x9)
|
||||
|
||||
inst_44:
|
||||
// rs1_val == 0x4746454443424140 and rs2_val == 0x4f4e4d4c4b4a4948
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x4746454443424140; op2val:0x4f4e4d4c4b4a4948
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x4746454443424140, 0x4f4e4d4c4b4a4948, x6, 200, x9)
|
||||
|
||||
inst_45:
|
||||
// rs1_val == 0x3f3e3d3c3b3a3938 and rs2_val == 0x3736353433323130
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x3f3e3d3c3b3a3938; op2val:0x3736353433323130
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0x3736353433323130, x6, 208, x9)
|
||||
|
||||
inst_46:
|
||||
// rs1_val == 0x3736353433323130 and rs2_val == 0x3f3e3d3c3b3a3938
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x3736353433323130; op2val:0x3f3e3d3c3b3a3938
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x3736353433323130, 0x3f3e3d3c3b3a3938, x6, 216, x9)
|
||||
|
||||
inst_47:
|
||||
// rs1_val == 0x2f2e2d2c2b2a2928 and rs2_val == 0x2726252423222120
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x2f2e2d2c2b2a2928; op2val:0x2726252423222120
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0x2726252423222120, x6, 224, x9)
|
||||
|
||||
inst_48:
|
||||
// rs1_val == 0x2726252423222120 and rs2_val == 0x2f2e2d2c2b2a2928
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x2726252423222120; op2val:0x2f2e2d2c2b2a2928
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x2726252423222120, 0x2f2e2d2c2b2a2928, x6, 232, x9)
|
||||
|
||||
inst_49:
|
||||
// rs1_val == 0x1f1e1d1c1b1a1918 and rs2_val == 0x1716151413121110
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x1f1e1d1c1b1a1918; op2val:0x1716151413121110
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0x1716151413121110, x6, 240, x9)
|
||||
|
||||
inst_50:
|
||||
// rs1_val == 0x1716151413121110 and rs2_val == 0x1f1e1d1c1b1a1918
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x1716151413121110; op2val:0x1f1e1d1c1b1a1918
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x1716151413121110, 0x1f1e1d1c1b1a1918, x6, 248, x9)
|
||||
|
||||
inst_51:
|
||||
// rs1_val == 0x0f0e0d0c0b0a0908 and rs2_val == 0x0706050403020100
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0xf0e0d0c0b0a0908; op2val:0x706050403020100
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0x706050403020100, x6, 256, x9)
|
||||
|
||||
inst_52:
|
||||
// rs1_val == 0x0706050403020100 and rs2_val == 0x0f0e0d0c0b0a0908
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x706050403020100; op2val:0xf0e0d0c0b0a0908
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x706050403020100, 0xf0e0d0c0b0a0908, x6, 264, x9)
|
||||
|
||||
inst_53:
|
||||
// rs1_val == 0x6af29145404fd8ed and rs2_val == 0x990e75eafff569c2
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x6af29145404fd8ed; op2val:0x990e75eafff569c2
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x6af29145404fd8ed, 0x990e75eafff569c2, x6, 272, x9)
|
||||
|
||||
inst_54:
|
||||
// rs1_val == 0xef1d54db32b81f27 and rs2_val == 0x1826a804284fe16c
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0xef1d54db32b81f27; op2val:0x1826a804284fe16c
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0xef1d54db32b81f27, 0x1826a804284fe16c, x6, 280, x9)
|
||||
|
||||
inst_55:
|
||||
// rs1_val == 0x79bb7c341d3110bc and rs2_val == 0x8678f5e3d272e229
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0x79bb7c341d3110bc; op2val:0x8678f5e3d272e229
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0x79bb7c341d3110bc, 0x8678f5e3d272e229, x6, 288, x9)
|
||||
|
||||
inst_56:
|
||||
// rs1_val == 0xf7f6f5f4f3f2f1f0 and rs2_val == 0xfffefdfcfbfaf9f8
|
||||
// opcode: aes64esm ; op1:x10; op2:x11; dest:x12; op1val:0xf7f6f5f4f3f2f1f0; op2val:0xfffefdfcfbfaf9f8
|
||||
TEST_RR_OP(aes64esm, x12, x10, x11, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xfffefdfcfbfaf9f8, x6, 296, x9)
|
||||
#endif
|
||||
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x10_0:
|
||||
.fill 0*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x10_1:
|
||||
.fill 19*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x6_0:
|
||||
.fill 38*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,389 +0,0 @@
|
||||
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64esm)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64esm)
|
||||
|
||||
RVTEST_SIGBASE( x31,signature_x31_1)
|
||||
|
||||
inst_0:
|
||||
// 1st Instruction => rs1 = x1; rs2 = x2 | 2nd Instruction => rs1 = x2; rs2 = x1 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x1; op2:x2; dest1:x3; dest2:x4; dest3:x5; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
xor x1, x1, x2;
|
||||
aes64esm x3, x1, x2;
|
||||
aes64esm x4, x2, x1;
|
||||
xor x5, x4, x2;
|
||||
RVTEST_SIGUPD(x31,x3,0);
|
||||
RVTEST_SIGUPD(x31,x4,8);
|
||||
RVTEST_SIGUPD(x31,x5,16);
|
||||
|
||||
inst_1:
|
||||
// 1st Instruction => rs1 = x2; rs2 = x3 | 2nd Instruction => rs1 = x3; rs2 = x2 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x2; op2:x3; dest1:x4; dest2:x5; dest3:x6; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
xor x2, x2, x3;
|
||||
aes64esm x4, x2, x3;
|
||||
aes64esm x5, x3, x2;
|
||||
xor x6, x5, x3;
|
||||
RVTEST_SIGUPD(x31,x4,24);
|
||||
RVTEST_SIGUPD(x31,x5,32);
|
||||
RVTEST_SIGUPD(x31,x6,40);
|
||||
|
||||
inst_2:
|
||||
// 1st Instruction => rs1 = x3; rs2 = x4 | 2nd Instruction => rs1 = x4; rs2 = x3 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x3; op2:x4; dest1:x5; dest2:x6; dest3:x7; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
xor x3, x3, x4;
|
||||
aes64esm x5, x3, x4;
|
||||
aes64esm x6, x4, x3;
|
||||
xor x7, x6, x4;
|
||||
RVTEST_SIGUPD(x31,x5,48);
|
||||
RVTEST_SIGUPD(x31,x6,56);
|
||||
RVTEST_SIGUPD(x31,x7,64);
|
||||
|
||||
inst_3:
|
||||
// 1st Instruction => rs1 = x4; rs2 = x5 | 2nd Instruction => rs1 = x5; rs2 = x4 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x4; op2:x5; dest1:x6; dest2:x7; dest3:x8; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
xor x4, x4, x5;
|
||||
aes64esm x6, x4, x5;
|
||||
aes64esm x7, x5, x4;
|
||||
xor x8, x7, x5;
|
||||
RVTEST_SIGUPD(x31,x6,72);
|
||||
RVTEST_SIGUPD(x31,x7,80);
|
||||
RVTEST_SIGUPD(x31,x8,88);
|
||||
|
||||
inst_4:
|
||||
// 1st Instruction => rs1 = x5; rs2 = x6 | 2nd Instruction => rs1 = x6; rs2 = x5 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x5; op2:x6; dest1:x7; dest2:x8; dest3:x9; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
xor x5, x5, x6;
|
||||
aes64esm x7, x5, x6;
|
||||
aes64esm x8, x6, x5;
|
||||
xor x9, x8, x6;
|
||||
RVTEST_SIGUPD(x31,x7,96);
|
||||
RVTEST_SIGUPD(x31,x8,104);
|
||||
RVTEST_SIGUPD(x31,x9,112);
|
||||
|
||||
inst_5:
|
||||
// 1st Instruction => rs1 = x6; rs2 = x7 | 2nd Instruction => rs1 = x7; rs2 = x6 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x6; op2:x7; dest1:x8; dest2:x9; dest3:x10; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
xor x6, x6, x7;
|
||||
aes64esm x8, x6, x7;
|
||||
aes64esm x9, x7, x6;
|
||||
xor x10, x9, x7;
|
||||
RVTEST_SIGUPD(x31,x8,120);
|
||||
RVTEST_SIGUPD(x31,x9,128);
|
||||
RVTEST_SIGUPD(x31,x10,136);
|
||||
|
||||
inst_6:
|
||||
// 1st Instruction => rs1 = x7; rs2 = x8 | 2nd Instruction => rs1 = x8; rs2 = x7 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x7; op2:x8; dest1:x9; dest2:x10; dest3:x11; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
xor x7, x7, x8;
|
||||
aes64esm x9, x7, x8;
|
||||
aes64esm x10, x8, x7;
|
||||
xor x11, x10, x8;
|
||||
RVTEST_SIGUPD(x31,x9,144);
|
||||
RVTEST_SIGUPD(x31,x10,152);
|
||||
RVTEST_SIGUPD(x31,x11,160);
|
||||
|
||||
inst_7:
|
||||
// 1st Instruction => rs1 = x8; rs2 = x9 | 2nd Instruction => rs1 = x9; rs2 = x8 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x8; op2:x9; dest1:x10; dest2:x11; dest3:x12; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
xor x8, x8, x9;
|
||||
aes64esm x10, x8, x9;
|
||||
aes64esm x11, x9, x8;
|
||||
xor x12, x11, x9;
|
||||
RVTEST_SIGUPD(x31,x10,168);
|
||||
RVTEST_SIGUPD(x31,x11,176);
|
||||
RVTEST_SIGUPD(x31,x12,184);
|
||||
|
||||
inst_8:
|
||||
// 1st Instruction => rs1 = x9; rs2 = x10 | 2nd Instruction => rs1 = x10; rs2 = x9 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x9; op2:x10; dest1:x11; dest2:x12; dest3:x13; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
xor x9, x9, x10;
|
||||
aes64esm x11, x9, x10;
|
||||
aes64esm x12, x10, x9;
|
||||
xor x13, x12, x10;
|
||||
RVTEST_SIGUPD(x31,x11,192);
|
||||
RVTEST_SIGUPD(x31,x12,200);
|
||||
RVTEST_SIGUPD(x31,x13,208);
|
||||
|
||||
inst_9:
|
||||
// 1st Instruction => rs1 = x10; rs2 = x11 | 2nd Instruction => rs1 = x11; rs2 = x10 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x10; op2:x11; dest1:x12; dest2:x13; dest3:x14; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
xor x10, x10, x11;
|
||||
aes64esm x12, x10, x11;
|
||||
aes64esm x13, x11, x10;
|
||||
xor x14, x13, x11;
|
||||
RVTEST_SIGUPD(x31,x12,216);
|
||||
RVTEST_SIGUPD(x31,x13,224);
|
||||
RVTEST_SIGUPD(x31,x14,232);
|
||||
|
||||
inst_10:
|
||||
// 1st Instruction => rs1 = x11; rs2 = x12 | 2nd Instruction => rs1 = x12; rs2 = x11 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x11; op2:x12; dest1:x13; dest2:x14; dest3:x15; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
xor x11, x11, x12;
|
||||
aes64esm x13, x11, x12;
|
||||
aes64esm x14, x12, x11;
|
||||
xor x15, x14, x12;
|
||||
RVTEST_SIGUPD(x31,x13,240);
|
||||
RVTEST_SIGUPD(x31,x14,248);
|
||||
RVTEST_SIGUPD(x31,x15,256);
|
||||
|
||||
inst_11:
|
||||
// 1st Instruction => rs1 = x12; rs2 = x13 | 2nd Instruction => rs1 = x13; rs2 = x12 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x12; op2:x13; dest1:x14; dest2:x15; dest3:x16; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
xor x12, x12, x13;
|
||||
aes64esm x14, x12, x13;
|
||||
aes64esm x15, x13, x12;
|
||||
xor x16, x15, x13;
|
||||
RVTEST_SIGUPD(x31,x14,264);
|
||||
RVTEST_SIGUPD(x31,x15,272);
|
||||
RVTEST_SIGUPD(x31,x16,280);
|
||||
|
||||
inst_12:
|
||||
// 1st Instruction => rs1 = x13; rs2 = x14 | 2nd Instruction => rs1 = x14; rs2 = x13 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x13; op2:x14; dest1:x15; dest2:x16; dest3:x17; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
xor x13, x13, x14;
|
||||
aes64esm x15, x13, x14;
|
||||
aes64esm x16, x14, x13;
|
||||
xor x17, x16, x14;
|
||||
RVTEST_SIGUPD(x31,x15,288);
|
||||
RVTEST_SIGUPD(x31,x16,296);
|
||||
RVTEST_SIGUPD(x31,x17,304);
|
||||
|
||||
inst_13:
|
||||
// 1st Instruction => rs1 = x14; rs2 = x15 | 2nd Instruction => rs1 = x15; rs2 = x14 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x14; op2:x15; dest1:x16; dest2:x17; dest3:x18; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
xor x14, x14, x15;
|
||||
aes64esm x16, x14, x15;
|
||||
aes64esm x17, x15, x14;
|
||||
xor x18, x17, x15;
|
||||
RVTEST_SIGUPD(x31,x16,312);
|
||||
RVTEST_SIGUPD(x31,x17,320);
|
||||
RVTEST_SIGUPD(x31,x18,328);
|
||||
|
||||
inst_14:
|
||||
// 1st Instruction => rs1 = x15; rs2 = x16 | 2nd Instruction => rs1 = x16; rs2 = x15 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x15; op2:x16; dest1:x17; dest2:x18; dest3:x19; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
xor x15, x15, x16;
|
||||
aes64esm x17, x15, x16;
|
||||
aes64esm x18, x16, x15;
|
||||
xor x19, x18, x16;
|
||||
RVTEST_SIGUPD(x31,x17,336);
|
||||
RVTEST_SIGUPD(x31,x18,344);
|
||||
RVTEST_SIGUPD(x31,x19,352);
|
||||
|
||||
inst_15:
|
||||
// 1st Instruction => rs1 = x16; rs2 = x17 | 2nd Instruction => rs1 = x17; rs2 = x16 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x16; op2:x17; dest1:x18; dest2:x19; dest3:x20; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
xor x16, x16, x17;
|
||||
aes64esm x18, x16, x17;
|
||||
aes64esm x19, x17, x16;
|
||||
xor x20, x19, x17;
|
||||
RVTEST_SIGUPD(x31,x18,360);
|
||||
RVTEST_SIGUPD(x31,x19,368);
|
||||
RVTEST_SIGUPD(x31,x20,376);
|
||||
|
||||
inst_16:
|
||||
// 1st Instruction => rs1 = x17; rs2 = x18 | 2nd Instruction => rs1 = x18; rs2 = x17 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x17; op2:x18; dest1:x19; dest2:x20; dest3:x21; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
xor x17, x17, x18;
|
||||
aes64esm x19, x17, x18;
|
||||
aes64esm x20, x18, x17;
|
||||
xor x21, x20, x18;
|
||||
RVTEST_SIGUPD(x31,x19,384);
|
||||
RVTEST_SIGUPD(x31,x20,392);
|
||||
RVTEST_SIGUPD(x31,x21,400);
|
||||
|
||||
inst_17:
|
||||
// 1st Instruction => rs1 = x18; rs2 = x19 | 2nd Instruction => rs1 = x19; rs2 = x18 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x18; op2:x19; dest1:x20; dest2:x21; dest3:x22; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
xor x18, x18, x19;
|
||||
aes64esm x20, x18, x19;
|
||||
aes64esm x21, x19, x18;
|
||||
xor x22, x21, x19;
|
||||
RVTEST_SIGUPD(x31,x20,408);
|
||||
RVTEST_SIGUPD(x31,x21,416);
|
||||
RVTEST_SIGUPD(x31,x22,424);
|
||||
|
||||
inst_18:
|
||||
// 1st Instruction => rs1 = x19; rs2 = x20 | 2nd Instruction => rs1 = x20; rs2 = x19 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x19; op2:x20; dest1:x21; dest2:x22; dest3:x23; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
xor x19, x19, x20;
|
||||
aes64esm x21, x19, x20;
|
||||
aes64esm x22, x20, x19;
|
||||
xor x23, x22, x20;
|
||||
RVTEST_SIGUPD(x31,x21,432);
|
||||
RVTEST_SIGUPD(x31,x22,440);
|
||||
RVTEST_SIGUPD(x31,x23,448);
|
||||
|
||||
inst_19:
|
||||
// 1st Instruction => rs1 = x20; rs2 = x21 | 2nd Instruction => rs1 = x21; rs2 = x20 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x20; op2:x21; dest1:x22; dest2:x23; dest3:x24; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
xor x20, x20, x21;
|
||||
aes64esm x22, x20, x21;
|
||||
aes64esm x23, x21, x20;
|
||||
xor x24, x23, x21;
|
||||
RVTEST_SIGUPD(x31,x22,456);
|
||||
RVTEST_SIGUPD(x31,x23,464);
|
||||
RVTEST_SIGUPD(x31,x24,472);
|
||||
|
||||
inst_20:
|
||||
// 1st Instruction => rs1 = x21; rs2 = x22 | 2nd Instruction => rs1 = x22; rs2 = x21 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x21; op2:x22; dest1:x23; dest2:x24; dest3:x25; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
xor x21, x21, x22;
|
||||
aes64esm x23, x21, x22;
|
||||
aes64esm x24, x22, x21;
|
||||
xor x25, x24, x22;
|
||||
RVTEST_SIGUPD(x31,x23,480);
|
||||
RVTEST_SIGUPD(x31,x24,488);
|
||||
RVTEST_SIGUPD(x31,x25,496);
|
||||
|
||||
inst_21:
|
||||
// 1st Instruction => rs1 = x22; rs2 = x23 | 2nd Instruction => rs1 = x23; rs2 = x22 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x22; op2:x23; dest1:x24; dest2:x25; dest3:x26; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
xor x22, x22, x23;
|
||||
aes64esm x24, x22, x23;
|
||||
aes64esm x25, x23, x22;
|
||||
xor x26, x25, x23;
|
||||
RVTEST_SIGUPD(x31,x24,504);
|
||||
RVTEST_SIGUPD(x31,x25,512);
|
||||
RVTEST_SIGUPD(x31,x26,520);
|
||||
|
||||
inst_22:
|
||||
// 1st Instruction => rs1 = x23; rs2 = x24 | 2nd Instruction => rs1 = x24; rs2 = x23 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x23; op2:x24; dest1:x25; dest2:x26; dest3:x27; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
xor x23, x23, x24;
|
||||
aes64esm x25, x23, x24;
|
||||
aes64esm x26, x24, x23;
|
||||
xor x27, x26, x24;
|
||||
RVTEST_SIGUPD(x31,x25,528);
|
||||
RVTEST_SIGUPD(x31,x26,536);
|
||||
RVTEST_SIGUPD(x31,x27,544);
|
||||
|
||||
inst_23:
|
||||
// 1st Instruction => rs1 = x24; rs2 = x25 | 2nd Instruction => rs1 = x25; rs2 = x24 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x24; op2:x25; dest1:x26; dest2:x27; dest3:x28; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
xor x24, x24, x25;
|
||||
aes64esm x26, x24, x25;
|
||||
aes64esm x27, x25, x24;
|
||||
xor x28, x27, x25;
|
||||
RVTEST_SIGUPD(x31,x26,552);
|
||||
RVTEST_SIGUPD(x31,x27,560);
|
||||
RVTEST_SIGUPD(x31,x28,568);
|
||||
|
||||
inst_24:
|
||||
// 1st Instruction => rs1 = x25; rs2 = x26 | 2nd Instruction => rs1 = x26; rs2 = x25 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x25; op2:x26; dest1:x27; dest2:x28; dest3:x29; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
xor x25, x25, x26;
|
||||
aes64esm x27, x25, x26;
|
||||
aes64esm x28, x26, x25;
|
||||
xor x29, x28, x26;
|
||||
RVTEST_SIGUPD(x31,x27,576);
|
||||
RVTEST_SIGUPD(x31,x28,584);
|
||||
RVTEST_SIGUPD(x31,x29,592);
|
||||
|
||||
inst_25:
|
||||
// 1st Instruction => rs1 = x26; rs2 = x27 | 2nd Instruction => rs1 = x27; rs2 = x26 | Result of xor goes into aes64esm & vice versa
|
||||
// opcode: aes64esm; op1:x26; op2:x27; dest1:x28; dest2:x29; dest3:x30; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
xor x26, x26, x27;
|
||||
aes64esm x28, x26, x27;
|
||||
aes64esm x29, x27, x26;
|
||||
xor x30, x29, x27;
|
||||
RVTEST_SIGUPD(x31,x28,600);
|
||||
RVTEST_SIGUPD(x31,x29,608);
|
||||
RVTEST_SIGUPD(x31,x30,616);
|
||||
|
||||
#endif
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x31_1:
|
||||
.fill 78*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
File diff suppressed because it is too large
Load Diff
@ -1,969 +0,0 @@
|
||||
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64im)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64im)
|
||||
|
||||
RVTEST_SIGBASE( x31,signature_x31_1)
|
||||
|
||||
inst_0:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
xor x3, x1, x2;
|
||||
aes64im x1, x3;
|
||||
xor x4, x1, x2;
|
||||
RVTEST_SIGUPD(x31,x3,0);
|
||||
RVTEST_SIGUPD(x31,x1,8);
|
||||
RVTEST_SIGUPD(x31,x4,16);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
not x3, x2;
|
||||
aes64im x1, x3;
|
||||
not x4, x1;
|
||||
RVTEST_SIGUPD(x31,x3,24);
|
||||
RVTEST_SIGUPD(x31,x1,32);
|
||||
RVTEST_SIGUPD(x31,x4,40);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x3; dest1:x1; op1val:0x08577eb1924770d3; op2val:0x93fdcab87b89296c
|
||||
li x1, 0x08577eb1924770d3;
|
||||
li x2, 0x93fdcab87b89296c;
|
||||
add x3, x1, x2;
|
||||
aes64im x1, x3;
|
||||
add x4, x1, x2;
|
||||
RVTEST_SIGUPD(x31,x3,48);
|
||||
RVTEST_SIGUPD(x31,x1,56);
|
||||
RVTEST_SIGUPD(x31,x4,64);
|
||||
|
||||
inst_1:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
xor x4, x2, x3;
|
||||
aes64im x2, x4;
|
||||
xor x5, x2, x3;
|
||||
RVTEST_SIGUPD(x31,x4,72);
|
||||
RVTEST_SIGUPD(x31,x2,80);
|
||||
RVTEST_SIGUPD(x31,x5,88);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
not x4, x3;
|
||||
aes64im x2, x4;
|
||||
not x5, x2;
|
||||
RVTEST_SIGUPD(x31,x4,96);
|
||||
RVTEST_SIGUPD(x31,x2,104);
|
||||
RVTEST_SIGUPD(x31,x5,112);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x4; dest1:x2; op1val:0x137a977753e8eb43; op2val:0x5c74e45eff1e5bef
|
||||
li x2, 0x137a977753e8eb43;
|
||||
li x3, 0x5c74e45eff1e5bef;
|
||||
add x4, x2, x3;
|
||||
aes64im x2, x4;
|
||||
add x5, x2, x3;
|
||||
RVTEST_SIGUPD(x31,x4,120);
|
||||
RVTEST_SIGUPD(x31,x2,128);
|
||||
RVTEST_SIGUPD(x31,x5,136);
|
||||
|
||||
inst_2:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
xor x5, x3, x4;
|
||||
aes64im x3, x5;
|
||||
xor x6, x3, x4;
|
||||
RVTEST_SIGUPD(x31,x5,144);
|
||||
RVTEST_SIGUPD(x31,x3,152);
|
||||
RVTEST_SIGUPD(x31,x6,160);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
not x5, x4;
|
||||
aes64im x3, x5;
|
||||
not x6, x3;
|
||||
RVTEST_SIGUPD(x31,x5,168);
|
||||
RVTEST_SIGUPD(x31,x3,176);
|
||||
RVTEST_SIGUPD(x31,x6,184);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x5; dest1:x3; op1val:0xaf949e5e2cb7362c; op2val:0x5cd2875ea96ec2b3
|
||||
li x3, 0xaf949e5e2cb7362c;
|
||||
li x4, 0x5cd2875ea96ec2b3;
|
||||
add x5, x3, x4;
|
||||
aes64im x3, x5;
|
||||
add x6, x3, x4;
|
||||
RVTEST_SIGUPD(x31,x5,192);
|
||||
RVTEST_SIGUPD(x31,x3,200);
|
||||
RVTEST_SIGUPD(x31,x6,208);
|
||||
|
||||
inst_3:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
xor x6, x4, x5;
|
||||
aes64im x4, x6;
|
||||
xor x7, x4, x5;
|
||||
RVTEST_SIGUPD(x31,x6,216);
|
||||
RVTEST_SIGUPD(x31,x4,224);
|
||||
RVTEST_SIGUPD(x31,x7,232);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
not x6, x5;
|
||||
aes64im x4, x6;
|
||||
not x7, x4;
|
||||
RVTEST_SIGUPD(x31,x6,240);
|
||||
RVTEST_SIGUPD(x31,x4,248);
|
||||
RVTEST_SIGUPD(x31,x7,256);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x6; dest1:x4; op1val:0xe8dac663f0e58650; op2val:0x3d7c95f9e5f0307e
|
||||
li x4, 0xe8dac663f0e58650;
|
||||
li x5, 0x3d7c95f9e5f0307e;
|
||||
add x6, x4, x5;
|
||||
aes64im x4, x6;
|
||||
add x7, x4, x5;
|
||||
RVTEST_SIGUPD(x31,x6,264);
|
||||
RVTEST_SIGUPD(x31,x4,272);
|
||||
RVTEST_SIGUPD(x31,x7,280);
|
||||
|
||||
inst_4:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
xor x7, x5, x6;
|
||||
aes64im x5, x7;
|
||||
xor x8, x5, x6;
|
||||
RVTEST_SIGUPD(x31,x7,288);
|
||||
RVTEST_SIGUPD(x31,x5,296);
|
||||
RVTEST_SIGUPD(x31,x8,304);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
not x7, x6;
|
||||
aes64im x5, x7;
|
||||
not x8, x5;
|
||||
RVTEST_SIGUPD(x31,x7,312);
|
||||
RVTEST_SIGUPD(x31,x5,320);
|
||||
RVTEST_SIGUPD(x31,x8,328);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x7; dest1:x5; op1val:0x807da245d814d575; op2val:0x3d06143769b1dcbf
|
||||
li x5, 0x807da245d814d575;
|
||||
li x6, 0x3d06143769b1dcbf;
|
||||
add x7, x5, x6;
|
||||
aes64im x5, x7;
|
||||
add x8, x5, x6;
|
||||
RVTEST_SIGUPD(x31,x7,336);
|
||||
RVTEST_SIGUPD(x31,x5,344);
|
||||
RVTEST_SIGUPD(x31,x8,352);
|
||||
|
||||
inst_5:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
xor x8, x6, x7;
|
||||
aes64im x6, x8;
|
||||
xor x9, x6, x7;
|
||||
RVTEST_SIGUPD(x31,x8,360);
|
||||
RVTEST_SIGUPD(x31,x6,368);
|
||||
RVTEST_SIGUPD(x31,x9,376);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
not x8, x7;
|
||||
aes64im x6, x8;
|
||||
not x9, x6;
|
||||
RVTEST_SIGUPD(x31,x8,384);
|
||||
RVTEST_SIGUPD(x31,x6,392);
|
||||
RVTEST_SIGUPD(x31,x9,400);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x8; dest1:x6; op1val:0x7213516d6a013380; op2val:0x4652f62dae4839a1
|
||||
li x6, 0x7213516d6a013380;
|
||||
li x7, 0x4652f62dae4839a1;
|
||||
add x8, x6, x7;
|
||||
aes64im x6, x8;
|
||||
add x9, x6, x7;
|
||||
RVTEST_SIGUPD(x31,x8,408);
|
||||
RVTEST_SIGUPD(x31,x6,416);
|
||||
RVTEST_SIGUPD(x31,x9,424);
|
||||
|
||||
inst_6:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
xor x9, x7, x8;
|
||||
aes64im x7, x9;
|
||||
xor x10, x7, x8;
|
||||
RVTEST_SIGUPD(x31,x9,432);
|
||||
RVTEST_SIGUPD(x31,x7,440);
|
||||
RVTEST_SIGUPD(x31,x10,448);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
not x9, x8;
|
||||
aes64im x7, x9;
|
||||
not x10, x7;
|
||||
RVTEST_SIGUPD(x31,x9,456);
|
||||
RVTEST_SIGUPD(x31,x7,464);
|
||||
RVTEST_SIGUPD(x31,x10,472);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x9; dest1:x7; op1val:0x53fbff6c58fa6e1c; op2val:0x0b2e2669b66b3284
|
||||
li x7, 0x53fbff6c58fa6e1c;
|
||||
li x8, 0x0b2e2669b66b3284;
|
||||
add x9, x7, x8;
|
||||
aes64im x7, x9;
|
||||
add x10, x7, x8;
|
||||
RVTEST_SIGUPD(x31,x9,480);
|
||||
RVTEST_SIGUPD(x31,x7,488);
|
||||
RVTEST_SIGUPD(x31,x10,496);
|
||||
|
||||
inst_7:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
xor x10, x8, x9;
|
||||
aes64im x8, x10;
|
||||
xor x11, x8, x9;
|
||||
RVTEST_SIGUPD(x31,x10,504);
|
||||
RVTEST_SIGUPD(x31,x8,512);
|
||||
RVTEST_SIGUPD(x31,x11,520);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
not x10, x9;
|
||||
aes64im x8, x10;
|
||||
not x11, x8;
|
||||
RVTEST_SIGUPD(x31,x10,528);
|
||||
RVTEST_SIGUPD(x31,x8,536);
|
||||
RVTEST_SIGUPD(x31,x11,544);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x10; dest1:x8; op1val:0xe918be9ffe057dc5; op2val:0x1011eeb47ff822ed
|
||||
li x8, 0xe918be9ffe057dc5;
|
||||
li x9, 0x1011eeb47ff822ed;
|
||||
add x10, x8, x9;
|
||||
aes64im x8, x10;
|
||||
add x11, x8, x9;
|
||||
RVTEST_SIGUPD(x31,x10,552);
|
||||
RVTEST_SIGUPD(x31,x8,560);
|
||||
RVTEST_SIGUPD(x31,x11,568);
|
||||
|
||||
inst_8:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
xor x11, x9, x10;
|
||||
aes64im x9, x11;
|
||||
xor x12, x9, x10;
|
||||
RVTEST_SIGUPD(x31,x11,576);
|
||||
RVTEST_SIGUPD(x31,x9,584);
|
||||
RVTEST_SIGUPD(x31,x12,592);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
not x11, x10;
|
||||
aes64im x9, x11;
|
||||
not x12, x9;
|
||||
RVTEST_SIGUPD(x31,x11,600);
|
||||
RVTEST_SIGUPD(x31,x9,608);
|
||||
RVTEST_SIGUPD(x31,x12,616);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x11; dest1:x9; op1val:0xb3a63fa37d69ceef; op2val:0x70fc1afc8f0846a2
|
||||
li x9, 0xb3a63fa37d69ceef;
|
||||
li x10, 0x70fc1afc8f0846a2;
|
||||
add x11, x9, x10;
|
||||
aes64im x9, x11;
|
||||
add x12, x9, x10;
|
||||
RVTEST_SIGUPD(x31,x11,624);
|
||||
RVTEST_SIGUPD(x31,x9,632);
|
||||
RVTEST_SIGUPD(x31,x12,640);
|
||||
|
||||
inst_9:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
xor x12, x10, x11;
|
||||
aes64im x10, x12;
|
||||
xor x13, x10, x11;
|
||||
RVTEST_SIGUPD(x31,x12,648);
|
||||
RVTEST_SIGUPD(x31,x10,656);
|
||||
RVTEST_SIGUPD(x31,x13,664);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
not x12, x11;
|
||||
aes64im x10, x12;
|
||||
not x13, x10;
|
||||
RVTEST_SIGUPD(x31,x12,672);
|
||||
RVTEST_SIGUPD(x31,x10,680);
|
||||
RVTEST_SIGUPD(x31,x13,688);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x12; dest1:x10; op1val:0xccadb61ffe20ce1c; op2val:0x72745307ec325eec
|
||||
li x10, 0xccadb61ffe20ce1c;
|
||||
li x11, 0x72745307ec325eec;
|
||||
add x12, x10, x11;
|
||||
aes64im x10, x12;
|
||||
add x13, x10, x11;
|
||||
RVTEST_SIGUPD(x31,x12,696);
|
||||
RVTEST_SIGUPD(x31,x10,704);
|
||||
RVTEST_SIGUPD(x31,x13,712);
|
||||
|
||||
inst_10:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
xor x13, x11, x12;
|
||||
aes64im x11, x13;
|
||||
xor x14, x11, x12;
|
||||
RVTEST_SIGUPD(x31,x13,720);
|
||||
RVTEST_SIGUPD(x31,x11,728);
|
||||
RVTEST_SIGUPD(x31,x14,736);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
not x13, x12;
|
||||
aes64im x11, x13;
|
||||
not x14, x11;
|
||||
RVTEST_SIGUPD(x31,x13,744);
|
||||
RVTEST_SIGUPD(x31,x11,752);
|
||||
RVTEST_SIGUPD(x31,x14,760);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x13; dest1:x11; op1val:0xa0e0bd86d4551408; op2val:0xcebe24d906600792
|
||||
li x11, 0xa0e0bd86d4551408;
|
||||
li x12, 0xcebe24d906600792;
|
||||
add x13, x11, x12;
|
||||
aes64im x11, x13;
|
||||
add x14, x11, x12;
|
||||
RVTEST_SIGUPD(x31,x13,768);
|
||||
RVTEST_SIGUPD(x31,x11,776);
|
||||
RVTEST_SIGUPD(x31,x14,784);
|
||||
|
||||
inst_11:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
xor x14, x12, x13;
|
||||
aes64im x12, x14;
|
||||
xor x15, x12, x13;
|
||||
RVTEST_SIGUPD(x31,x14,792);
|
||||
RVTEST_SIGUPD(x31,x12,800);
|
||||
RVTEST_SIGUPD(x31,x15,808);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
not x14, x13;
|
||||
aes64im x12, x14;
|
||||
not x15, x12;
|
||||
RVTEST_SIGUPD(x31,x14,816);
|
||||
RVTEST_SIGUPD(x31,x12,824);
|
||||
RVTEST_SIGUPD(x31,x15,832);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x14; dest1:x12; op1val:0xd1142724fb37bec8; op2val:0xab8534c129a2575f
|
||||
li x12, 0xd1142724fb37bec8;
|
||||
li x13, 0xab8534c129a2575f;
|
||||
add x14, x12, x13;
|
||||
aes64im x12, x14;
|
||||
add x15, x12, x13;
|
||||
RVTEST_SIGUPD(x31,x14,840);
|
||||
RVTEST_SIGUPD(x31,x12,848);
|
||||
RVTEST_SIGUPD(x31,x15,856);
|
||||
|
||||
inst_12:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
xor x15, x13, x14;
|
||||
aes64im x13, x15;
|
||||
xor x16, x13, x14;
|
||||
RVTEST_SIGUPD(x31,x15,864);
|
||||
RVTEST_SIGUPD(x31,x13,872);
|
||||
RVTEST_SIGUPD(x31,x16,880);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
not x15, x14;
|
||||
aes64im x13, x15;
|
||||
not x16, x13;
|
||||
RVTEST_SIGUPD(x31,x15,888);
|
||||
RVTEST_SIGUPD(x31,x13,896);
|
||||
RVTEST_SIGUPD(x31,x16,904);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x15; dest1:x13; op1val:0x98f7c41c44115b04; op2val:0x01fbbe93a08b84f3
|
||||
li x13, 0x98f7c41c44115b04;
|
||||
li x14, 0x01fbbe93a08b84f3;
|
||||
add x15, x13, x14;
|
||||
aes64im x13, x15;
|
||||
add x16, x13, x14;
|
||||
RVTEST_SIGUPD(x31,x15,912);
|
||||
RVTEST_SIGUPD(x31,x13,920);
|
||||
RVTEST_SIGUPD(x31,x16,928);
|
||||
|
||||
inst_13:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
xor x16, x14, x15;
|
||||
aes64im x14, x16;
|
||||
xor x17, x14, x15;
|
||||
RVTEST_SIGUPD(x31,x16,936);
|
||||
RVTEST_SIGUPD(x31,x14,944);
|
||||
RVTEST_SIGUPD(x31,x17,952);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
not x16, x15;
|
||||
aes64im x14, x16;
|
||||
not x17, x14;
|
||||
RVTEST_SIGUPD(x31,x16,960);
|
||||
RVTEST_SIGUPD(x31,x14,968);
|
||||
RVTEST_SIGUPD(x31,x17,976);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x16; dest1:x14; op1val:0x5916d2810e24d9cc; op2val:0x74f5add55c37849a
|
||||
li x14, 0x5916d2810e24d9cc;
|
||||
li x15, 0x74f5add55c37849a;
|
||||
add x16, x14, x15;
|
||||
aes64im x14, x16;
|
||||
add x17, x14, x15;
|
||||
RVTEST_SIGUPD(x31,x16,984);
|
||||
RVTEST_SIGUPD(x31,x14,992);
|
||||
RVTEST_SIGUPD(x31,x17,1000);
|
||||
|
||||
inst_14:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
xor x17, x15, x16;
|
||||
aes64im x15, x17;
|
||||
xor x18, x15, x16;
|
||||
RVTEST_SIGUPD(x31,x17,1008);
|
||||
RVTEST_SIGUPD(x31,x15,1016);
|
||||
RVTEST_SIGUPD(x31,x18,1024);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
not x17, x16;
|
||||
aes64im x15, x17;
|
||||
not x18, x15;
|
||||
RVTEST_SIGUPD(x31,x17,1032);
|
||||
RVTEST_SIGUPD(x31,x15,1040);
|
||||
RVTEST_SIGUPD(x31,x18,1048);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x17; dest1:x15; op1val:0x46ed745fb9fef1d6; op2val:0x9651ee657a1d33ca
|
||||
li x15, 0x46ed745fb9fef1d6;
|
||||
li x16, 0x9651ee657a1d33ca;
|
||||
add x17, x15, x16;
|
||||
aes64im x15, x17;
|
||||
add x18, x15, x16;
|
||||
RVTEST_SIGUPD(x31,x17,1056);
|
||||
RVTEST_SIGUPD(x31,x15,1064);
|
||||
RVTEST_SIGUPD(x31,x18,1072);
|
||||
|
||||
inst_15:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
xor x18, x16, x17;
|
||||
aes64im x16, x18;
|
||||
xor x19, x16, x17;
|
||||
RVTEST_SIGUPD(x31,x18,1080);
|
||||
RVTEST_SIGUPD(x31,x16,1088);
|
||||
RVTEST_SIGUPD(x31,x19,1096);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
not x18, x17;
|
||||
aes64im x16, x18;
|
||||
not x19, x16;
|
||||
RVTEST_SIGUPD(x31,x18,1104);
|
||||
RVTEST_SIGUPD(x31,x16,1112);
|
||||
RVTEST_SIGUPD(x31,x19,1120);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x18; dest1:x16; op1val:0x9c3d087c65835bdf; op2val:0x9b11d383484641f5
|
||||
li x16, 0x9c3d087c65835bdf;
|
||||
li x17, 0x9b11d383484641f5;
|
||||
add x18, x16, x17;
|
||||
aes64im x16, x18;
|
||||
add x19, x16, x17;
|
||||
RVTEST_SIGUPD(x31,x18,1128);
|
||||
RVTEST_SIGUPD(x31,x16,1136);
|
||||
RVTEST_SIGUPD(x31,x19,1144);
|
||||
|
||||
inst_16:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
xor x19, x17, x18;
|
||||
aes64im x17, x19;
|
||||
xor x20, x17, x18;
|
||||
RVTEST_SIGUPD(x31,x19,1152);
|
||||
RVTEST_SIGUPD(x31,x17,1160);
|
||||
RVTEST_SIGUPD(x31,x20,1168);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
not x19, x18;
|
||||
aes64im x17, x19;
|
||||
not x20, x17;
|
||||
RVTEST_SIGUPD(x31,x19,1176);
|
||||
RVTEST_SIGUPD(x31,x17,1184);
|
||||
RVTEST_SIGUPD(x31,x20,1192);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x19; dest1:x17; op1val:0x041bbaab97eb7c0f; op2val:0x93017690e356529c
|
||||
li x17, 0x041bbaab97eb7c0f;
|
||||
li x18, 0x93017690e356529c;
|
||||
add x19, x17, x18;
|
||||
aes64im x17, x19;
|
||||
add x20, x17, x18;
|
||||
RVTEST_SIGUPD(x31,x19,1200);
|
||||
RVTEST_SIGUPD(x31,x17,1208);
|
||||
RVTEST_SIGUPD(x31,x20,1216);
|
||||
|
||||
inst_17:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
xor x20, x18, x19;
|
||||
aes64im x18, x20;
|
||||
xor x21, x18, x19;
|
||||
RVTEST_SIGUPD(x31,x20,1224);
|
||||
RVTEST_SIGUPD(x31,x18,1232);
|
||||
RVTEST_SIGUPD(x31,x21,1240);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
not x20, x19;
|
||||
aes64im x18, x20;
|
||||
not x21, x18;
|
||||
RVTEST_SIGUPD(x31,x20,1248);
|
||||
RVTEST_SIGUPD(x31,x18,1256);
|
||||
RVTEST_SIGUPD(x31,x21,1264);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x20; dest1:x18; op1val:0xef677106dc17ae6e; op2val:0xc5d09b942be2d8c9
|
||||
li x18, 0xef677106dc17ae6e;
|
||||
li x19, 0xc5d09b942be2d8c9;
|
||||
add x20, x18, x19;
|
||||
aes64im x18, x20;
|
||||
add x21, x18, x19;
|
||||
RVTEST_SIGUPD(x31,x20,1272);
|
||||
RVTEST_SIGUPD(x31,x18,1280);
|
||||
RVTEST_SIGUPD(x31,x21,1288);
|
||||
|
||||
inst_18:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
xor x21, x19, x20;
|
||||
aes64im x19, x21;
|
||||
xor x22, x19, x20;
|
||||
RVTEST_SIGUPD(x31,x21,1296);
|
||||
RVTEST_SIGUPD(x31,x19,1304);
|
||||
RVTEST_SIGUPD(x31,x22,1312);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
not x21, x20;
|
||||
aes64im x19, x21;
|
||||
not x22, x19;
|
||||
RVTEST_SIGUPD(x31,x21,1320);
|
||||
RVTEST_SIGUPD(x31,x19,1328);
|
||||
RVTEST_SIGUPD(x31,x22,1336);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x21; dest1:x19; op1val:0x755961a98347ddf5; op2val:0x18d71be431c00570
|
||||
li x19, 0x755961a98347ddf5;
|
||||
li x20, 0x18d71be431c00570;
|
||||
add x21, x19, x20;
|
||||
aes64im x19, x21;
|
||||
add x22, x19, x20;
|
||||
RVTEST_SIGUPD(x31,x21,1344);
|
||||
RVTEST_SIGUPD(x31,x19,1352);
|
||||
RVTEST_SIGUPD(x31,x22,1360);
|
||||
|
||||
inst_19:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
xor x22, x20, x21;
|
||||
aes64im x20, x22;
|
||||
xor x23, x20, x21;
|
||||
RVTEST_SIGUPD(x31,x22,1368);
|
||||
RVTEST_SIGUPD(x31,x20,1376);
|
||||
RVTEST_SIGUPD(x31,x23,1384);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
not x22, x21;
|
||||
aes64im x20, x22;
|
||||
not x23, x20;
|
||||
RVTEST_SIGUPD(x31,x22,1392);
|
||||
RVTEST_SIGUPD(x31,x20,1400);
|
||||
RVTEST_SIGUPD(x31,x23,1408);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x22; dest1:x20; op1val:0x8f2248c25c3577f5; op2val:0x2a5dc0a00d453cdf
|
||||
li x20, 0x8f2248c25c3577f5;
|
||||
li x21, 0x2a5dc0a00d453cdf;
|
||||
add x22, x20, x21;
|
||||
aes64im x20, x22;
|
||||
add x23, x20, x21;
|
||||
RVTEST_SIGUPD(x31,x22,1416);
|
||||
RVTEST_SIGUPD(x31,x20,1424);
|
||||
RVTEST_SIGUPD(x31,x23,1432);
|
||||
|
||||
inst_20:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
xor x23, x21, x22;
|
||||
aes64im x21, x23;
|
||||
xor x24, x21, x22;
|
||||
RVTEST_SIGUPD(x31,x23,1440);
|
||||
RVTEST_SIGUPD(x31,x21,1448);
|
||||
RVTEST_SIGUPD(x31,x24,1456);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
not x23, x22;
|
||||
aes64im x21, x23;
|
||||
not x24, x21;
|
||||
RVTEST_SIGUPD(x31,x23,1464);
|
||||
RVTEST_SIGUPD(x31,x21,1472);
|
||||
RVTEST_SIGUPD(x31,x24,1480);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x23; dest1:x21; op1val:0x6dc3cceec36ffd4b; op2val:0xc2713ce25868105b
|
||||
li x21, 0x6dc3cceec36ffd4b;
|
||||
li x22, 0xc2713ce25868105b;
|
||||
add x23, x21, x22;
|
||||
aes64im x21, x23;
|
||||
add x24, x21, x22;
|
||||
RVTEST_SIGUPD(x31,x23,1488);
|
||||
RVTEST_SIGUPD(x31,x21,1496);
|
||||
RVTEST_SIGUPD(x31,x24,1504);
|
||||
|
||||
inst_21:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
xor x24, x22, x23;
|
||||
aes64im x22, x24;
|
||||
xor x25, x22, x23;
|
||||
RVTEST_SIGUPD(x31,x24,1512);
|
||||
RVTEST_SIGUPD(x31,x22,1520);
|
||||
RVTEST_SIGUPD(x31,x25,1528);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
not x24, x23;
|
||||
aes64im x22, x24;
|
||||
not x25, x22;
|
||||
RVTEST_SIGUPD(x31,x24,1536);
|
||||
RVTEST_SIGUPD(x31,x22,1544);
|
||||
RVTEST_SIGUPD(x31,x25,1552);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x24; dest1:x22; op1val:0xe4367ccad9716f2c; op2val:0x9ea76f0885958881
|
||||
li x22, 0xe4367ccad9716f2c;
|
||||
li x23, 0x9ea76f0885958881;
|
||||
add x24, x22, x23;
|
||||
aes64im x22, x24;
|
||||
add x25, x22, x23;
|
||||
RVTEST_SIGUPD(x31,x24,1560);
|
||||
RVTEST_SIGUPD(x31,x22,1568);
|
||||
RVTEST_SIGUPD(x31,x25,1576);
|
||||
|
||||
inst_22:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
xor x25, x23, x24;
|
||||
aes64im x23, x25;
|
||||
xor x26, x23, x24;
|
||||
RVTEST_SIGUPD(x31,x25,1584);
|
||||
RVTEST_SIGUPD(x31,x23,1592);
|
||||
RVTEST_SIGUPD(x31,x26,1600);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
not x25, x24;
|
||||
aes64im x23, x25;
|
||||
not x26, x23;
|
||||
RVTEST_SIGUPD(x31,x25,1608);
|
||||
RVTEST_SIGUPD(x31,x23,1616);
|
||||
RVTEST_SIGUPD(x31,x26,1624);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x25; dest1:x23; op1val:0x37c4c6b99530db93; op2val:0x132a717606aec150
|
||||
li x23, 0x37c4c6b99530db93;
|
||||
li x24, 0x132a717606aec150;
|
||||
add x25, x23, x24;
|
||||
aes64im x23, x25;
|
||||
add x26, x23, x24;
|
||||
RVTEST_SIGUPD(x31,x25,1632);
|
||||
RVTEST_SIGUPD(x31,x23,1640);
|
||||
RVTEST_SIGUPD(x31,x26,1648);
|
||||
|
||||
inst_23:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
xor x26, x24, x25;
|
||||
aes64im x24, x26;
|
||||
xor x27, x24, x25;
|
||||
RVTEST_SIGUPD(x31,x26,1656);
|
||||
RVTEST_SIGUPD(x31,x24,1664);
|
||||
RVTEST_SIGUPD(x31,x27,1672);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
not x26, x25;
|
||||
aes64im x24, x26;
|
||||
not x27, x24;
|
||||
RVTEST_SIGUPD(x31,x26,1680);
|
||||
RVTEST_SIGUPD(x31,x24,1688);
|
||||
RVTEST_SIGUPD(x31,x27,1696);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x26; dest1:x24; op1val:0x04d3e5f42bccd6b6; op2val:0x339863c4d216eea8
|
||||
li x24, 0x04d3e5f42bccd6b6;
|
||||
li x25, 0x339863c4d216eea8;
|
||||
add x26, x24, x25;
|
||||
aes64im x24, x26;
|
||||
add x27, x24, x25;
|
||||
RVTEST_SIGUPD(x31,x26,1704);
|
||||
RVTEST_SIGUPD(x31,x24,1712);
|
||||
RVTEST_SIGUPD(x31,x27,1720);
|
||||
|
||||
inst_24:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
xor x27, x25, x26;
|
||||
aes64im x25, x27;
|
||||
xor x28, x25, x26;
|
||||
RVTEST_SIGUPD(x31,x27,1728);
|
||||
RVTEST_SIGUPD(x31,x25,1736);
|
||||
RVTEST_SIGUPD(x31,x28,1744);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
not x27, x26;
|
||||
aes64im x25, x27;
|
||||
not x28, x25;
|
||||
RVTEST_SIGUPD(x31,x27,1752);
|
||||
RVTEST_SIGUPD(x31,x25,1760);
|
||||
RVTEST_SIGUPD(x31,x28,1768);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x27; dest1:x25; op1val:0xd6ac851f07155a89; op2val:0x2d885062faa97965
|
||||
li x25, 0xd6ac851f07155a89;
|
||||
li x26, 0x2d885062faa97965;
|
||||
add x27, x25, x26;
|
||||
aes64im x25, x27;
|
||||
add x28, x25, x26;
|
||||
RVTEST_SIGUPD(x31,x27,1776);
|
||||
RVTEST_SIGUPD(x31,x25,1784);
|
||||
RVTEST_SIGUPD(x31,x28,1792);
|
||||
|
||||
inst_25:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
xor x28, x26, x27;
|
||||
aes64im x26, x28;
|
||||
xor x29, x26, x27;
|
||||
RVTEST_SIGUPD(x31,x28,1800);
|
||||
RVTEST_SIGUPD(x31,x26,1808);
|
||||
RVTEST_SIGUPD(x31,x29,1816);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
not x28, x27;
|
||||
aes64im x26, x28;
|
||||
not x29, x26;
|
||||
RVTEST_SIGUPD(x31,x28,1824);
|
||||
RVTEST_SIGUPD(x31,x26,1832);
|
||||
RVTEST_SIGUPD(x31,x29,1840);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x28; dest1:x26; op1val:0x8d3ba7550c3c31a8; op2val:0xb3e73cbb0d8258c4
|
||||
li x26, 0x8d3ba7550c3c31a8;
|
||||
li x27, 0xb3e73cbb0d8258c4;
|
||||
add x28, x26, x27;
|
||||
aes64im x26, x28;
|
||||
add x29, x26, x27;
|
||||
RVTEST_SIGUPD(x31,x28,1848);
|
||||
RVTEST_SIGUPD(x31,x26,1856);
|
||||
RVTEST_SIGUPD(x31,x29,1864);
|
||||
|
||||
inst_26:
|
||||
// Forwarded xor into aes64im & the result back into xor
|
||||
// opcode: aes64im; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
|
||||
li x27, 0x239853f9120ff957;
|
||||
li x28, 0x2d13320e40d0e5e7;
|
||||
xor x29, x27, x28;
|
||||
aes64im x27, x29;
|
||||
xor x30, x27, x28;
|
||||
RVTEST_SIGUPD(x31,x29,1872);
|
||||
RVTEST_SIGUPD(x31,x27,1880);
|
||||
RVTEST_SIGUPD(x31,x30,1888);
|
||||
|
||||
// Forwarded not into aes64im & the result back into not
|
||||
// opcode: aes64im; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
|
||||
li x27, 0x239853f9120ff957;
|
||||
li x28, 0x2d13320e40d0e5e7;
|
||||
not x29, x28;
|
||||
aes64im x27, x29;
|
||||
not x30, x27;
|
||||
RVTEST_SIGUPD(x31,x29,1896);
|
||||
RVTEST_SIGUPD(x31,x27,1904);
|
||||
RVTEST_SIGUPD(x31,x30,1912);
|
||||
|
||||
// Forwarded add into aes64im & the result back into add
|
||||
// opcode: aes64im; op1:x29; dest1:x27; op1val:0x239853f9120ff957; op2val:0x2d13320e40d0e5e7
|
||||
li x27, 0x239853f9120ff957;
|
||||
li x28, 0x2d13320e40d0e5e7;
|
||||
add x29, x27, x28;
|
||||
aes64im x27, x29;
|
||||
add x30, x27, x28;
|
||||
RVTEST_SIGUPD(x31,x29,1920);
|
||||
RVTEST_SIGUPD(x31,x27,1928);
|
||||
RVTEST_SIGUPD(x31,x30,1936);
|
||||
|
||||
#endif
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x31_1:
|
||||
.fill 243*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,304 +0,0 @@
|
||||
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64im)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64im)
|
||||
|
||||
RVTEST_SIGBASE( x31,signature_x31_1)
|
||||
|
||||
la x1, rvtest_data
|
||||
|
||||
inst_0:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x2; dest1:x3;
|
||||
LREG x2, 0(x1);
|
||||
aes64im x3, x2;
|
||||
RVTEST_SIGUPD(x31,x2,0);
|
||||
RVTEST_SIGUPD(x31,x3,8);
|
||||
|
||||
inst_1:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x3; dest1:x4;
|
||||
LREG x3, 8(x1);
|
||||
aes64im x4, x3;
|
||||
RVTEST_SIGUPD(x31,x3,16);
|
||||
RVTEST_SIGUPD(x31,x4,24);
|
||||
|
||||
inst_2:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x4; dest1:x5;
|
||||
LREG x4, 16(x1);
|
||||
aes64im x5, x4;
|
||||
RVTEST_SIGUPD(x31,x4,32);
|
||||
RVTEST_SIGUPD(x31,x5,40);
|
||||
|
||||
inst_3:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x5; dest1:x6;
|
||||
LREG x5, 24(x1);
|
||||
aes64im x6, x5;
|
||||
RVTEST_SIGUPD(x31,x5,48);
|
||||
RVTEST_SIGUPD(x31,x6,56);
|
||||
|
||||
inst_4:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x6; dest1:x7;
|
||||
LREG x6, 32(x1);
|
||||
aes64im x7, x6;
|
||||
RVTEST_SIGUPD(x31,x6,64);
|
||||
RVTEST_SIGUPD(x31,x7,72);
|
||||
|
||||
inst_5:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x7; dest1:x8;
|
||||
LREG x7, 40(x1);
|
||||
aes64im x8, x7;
|
||||
RVTEST_SIGUPD(x31,x7,80);
|
||||
RVTEST_SIGUPD(x31,x8,88);
|
||||
|
||||
inst_6:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x8; dest1:x9;
|
||||
LREG x8, 48(x1);
|
||||
aes64im x9, x8;
|
||||
RVTEST_SIGUPD(x31,x8,96);
|
||||
RVTEST_SIGUPD(x31,x9,104);
|
||||
|
||||
inst_7:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x9; dest1:x10;
|
||||
LREG x9, 56(x1);
|
||||
aes64im x10, x9;
|
||||
RVTEST_SIGUPD(x31,x9,112);
|
||||
RVTEST_SIGUPD(x31,x10,120);
|
||||
|
||||
inst_8:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x10; dest1:x11;
|
||||
LREG x10, 64(x1);
|
||||
aes64im x11, x10;
|
||||
RVTEST_SIGUPD(x31,x10,128);
|
||||
RVTEST_SIGUPD(x31,x11,136);
|
||||
|
||||
inst_9:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x11; dest1:x12;
|
||||
LREG x11, 72(x1);
|
||||
aes64im x12, x11;
|
||||
RVTEST_SIGUPD(x31,x11,144);
|
||||
RVTEST_SIGUPD(x31,x12,152);
|
||||
|
||||
inst_10:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x12; dest1:x13;
|
||||
LREG x12, 80(x1);
|
||||
aes64im x13, x12;
|
||||
RVTEST_SIGUPD(x31,x12,160);
|
||||
RVTEST_SIGUPD(x31,x13,168);
|
||||
|
||||
inst_11:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x13; dest1:x14;
|
||||
LREG x13, 88(x1);
|
||||
aes64im x14, x13;
|
||||
RVTEST_SIGUPD(x31,x13,176);
|
||||
RVTEST_SIGUPD(x31,x14,184);
|
||||
|
||||
inst_12:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x14; dest1:x15;
|
||||
LREG x14, 96(x1);
|
||||
aes64im x15, x14;
|
||||
RVTEST_SIGUPD(x31,x14,192);
|
||||
RVTEST_SIGUPD(x31,x15,200);
|
||||
|
||||
inst_13:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x15; dest1:x16;
|
||||
LREG x15, 104(x1);
|
||||
aes64im x16, x15;
|
||||
RVTEST_SIGUPD(x31,x15,208);
|
||||
RVTEST_SIGUPD(x31,x16,216);
|
||||
|
||||
inst_14:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x16; dest1:x17;
|
||||
LREG x16, 112(x1);
|
||||
aes64im x17, x16;
|
||||
RVTEST_SIGUPD(x31,x16,224);
|
||||
RVTEST_SIGUPD(x31,x17,232);
|
||||
|
||||
inst_15:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x17; dest1:x18;
|
||||
LREG x17, 120(x1);
|
||||
aes64im x18, x17;
|
||||
RVTEST_SIGUPD(x31,x17,240);
|
||||
RVTEST_SIGUPD(x31,x18,248);
|
||||
|
||||
inst_16:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x18; dest1:x19;
|
||||
LREG x18, 128(x1);
|
||||
aes64im x19, x18;
|
||||
RVTEST_SIGUPD(x31,x18,256);
|
||||
RVTEST_SIGUPD(x31,x19,264);
|
||||
|
||||
inst_17:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x19; dest1:x20;
|
||||
LREG x19, 136(x1);
|
||||
aes64im x20, x19;
|
||||
RVTEST_SIGUPD(x31,x19,272);
|
||||
RVTEST_SIGUPD(x31,x20,280);
|
||||
|
||||
inst_18:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x20; dest1:x21;
|
||||
LREG x20, 144(x1);
|
||||
aes64im x21, x20;
|
||||
RVTEST_SIGUPD(x31,x20,288);
|
||||
RVTEST_SIGUPD(x31,x21,296);
|
||||
|
||||
inst_19:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x21; dest1:x22;
|
||||
LREG x21, 152(x1);
|
||||
aes64im x22, x21;
|
||||
RVTEST_SIGUPD(x31,x21,304);
|
||||
RVTEST_SIGUPD(x31,x22,312);
|
||||
|
||||
inst_20:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x22; dest1:x23;
|
||||
LREG x22, 160(x1);
|
||||
aes64im x23, x22;
|
||||
RVTEST_SIGUPD(x31,x22,320);
|
||||
RVTEST_SIGUPD(x31,x23,328);
|
||||
|
||||
inst_21:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x23; dest1:x24;
|
||||
LREG x23, 168(x1);
|
||||
aes64im x24, x23;
|
||||
RVTEST_SIGUPD(x31,x23,336);
|
||||
RVTEST_SIGUPD(x31,x24,344);
|
||||
|
||||
inst_22:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x24; dest1:x25;
|
||||
LREG x24, 176(x1);
|
||||
aes64im x25, x24;
|
||||
RVTEST_SIGUPD(x31,x24,352);
|
||||
RVTEST_SIGUPD(x31,x25,360);
|
||||
|
||||
inst_23:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x25; dest1:x26;
|
||||
LREG x25, 184(x1);
|
||||
aes64im x26, x25;
|
||||
RVTEST_SIGUPD(x31,x25,368);
|
||||
RVTEST_SIGUPD(x31,x26,376);
|
||||
|
||||
inst_24:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x26; dest1:x27;
|
||||
LREG x26, 192(x1);
|
||||
aes64im x27, x26;
|
||||
RVTEST_SIGUPD(x31,x26,384);
|
||||
RVTEST_SIGUPD(x31,x27,392);
|
||||
|
||||
inst_25:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x27; dest1:x28;
|
||||
LREG x27, 200(x1);
|
||||
aes64im x28, x27;
|
||||
RVTEST_SIGUPD(x31,x27,400);
|
||||
RVTEST_SIGUPD(x31,x28,408);
|
||||
|
||||
inst_26:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x28; dest1:x29;
|
||||
LREG x28, 208(x1);
|
||||
aes64im x29, x28;
|
||||
RVTEST_SIGUPD(x31,x28,416);
|
||||
RVTEST_SIGUPD(x31,x29,424);
|
||||
|
||||
inst_27:
|
||||
// Checking load-to-use hazard!
|
||||
// opcode: aes64im; op1:x29; dest1:x30;
|
||||
LREG x29, 216(x1);
|
||||
aes64im x30, x29;
|
||||
RVTEST_SIGUPD(x31,x29,432);
|
||||
RVTEST_SIGUPD(x31,x30,440);
|
||||
|
||||
#endif
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.dword 0x08577eb1924770d3
|
||||
.dword 0x93fdcab87b89296c
|
||||
.dword 0xd2d6b8777dc59a3a
|
||||
.dword 0xcf84b683a749f9c5
|
||||
.dword 0x854a965708ceac39
|
||||
.dword 0x137a977753e8eb43
|
||||
.dword 0x5c74e45eff1e5bef
|
||||
.dword 0xdc3383836b9f15c4
|
||||
.dword 0x5ae6a2289a6ab329
|
||||
.dword 0x432779eeacca7f0d
|
||||
.dword 0xaf949e5e2cb7362c
|
||||
.dword 0x5cd2875ea96ec2b3
|
||||
.dword 0x9d02fc90708cc1b6
|
||||
.dword 0x953b00b00b54aa22
|
||||
.dword 0x224c06013c53d0e3
|
||||
.dword 0xe8dac663f0e58650
|
||||
.dword 0x3d7c95f9e5f0307e
|
||||
.dword 0x8c8a18b2aaac3142
|
||||
.dword 0x785036de6f9fb997
|
||||
.dword 0x95a4d257a7298c66
|
||||
.dword 0x807da245d814d575
|
||||
.dword 0x3d06143769b1dcbf
|
||||
.dword 0x7f21682208208d09
|
||||
.dword 0x14b91c79dae98554
|
||||
.dword 0xc5ec6148c6880007
|
||||
.dword 0x7213516d6a013380
|
||||
.dword 0x4652f62dae4839a1
|
||||
.dword 0x85986adb9e044706
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x31_1:
|
||||
.fill 56*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
@ -1,509 +0,0 @@
|
||||
// -----------
|
||||
// This file was generated by riscv_ctg (https://gitlab.com/incoresemi/riscv-compliance/riscv_ctg)
|
||||
// version : 0.5.1
|
||||
// timestamp : Thu Aug 12 11:00:04 2021 GMT
|
||||
// usage : riscv_ctg \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/dataset.cgf \
|
||||
// --cgf /scratch/git-repo/github/riscv-ctg/sample_cgfs/rv64i_k.cgf \
|
||||
// --base-isa rv64i \
|
||||
// --randomize
|
||||
// -----------
|
||||
//
|
||||
// -----------
|
||||
// Copyright (c) 2020. RISC-V International. All rights reserved.
|
||||
// SPDX-License-Identifier: BSD-3-Clause
|
||||
// -----------
|
||||
//
|
||||
// This assembly file tests the aes64ks1i instruction of the RISC-V K extension for the aes64ks1i covergroup.
|
||||
//
|
||||
#include "model_test.h"
|
||||
#include "arch_test.h"
|
||||
RVTEST_ISA("RV64IK")
|
||||
|
||||
.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(.*64.*);check ISA:=regex(.*RV64.*I.*K.*);def TEST_CASE_1=True;",aes64ks1i)
|
||||
|
||||
RVTEST_CASE(1,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKn.*);def TEST_CASE_1=True;",aes64ks1i)
|
||||
|
||||
RVTEST_CASE(2,"//check ISA:=regex(.*64.*);check ISA:=regex(.*RV64.*I.*ZKne.*);def TEST_CASE_1=True;",aes64ks1i)
|
||||
|
||||
RVTEST_SIGBASE( x14,signature_x14_1)
|
||||
|
||||
inst_0:
|
||||
// rs1 != rd, rs1==x7, rd==x8, rs1_val == 0x0706050403020100 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x7; dest:x8; op1val:0x706050403020100; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x8, x7, 0x0000000000000000, 0x706050403020100, 0xa, x14, 0, x15)
|
||||
|
||||
inst_1:
|
||||
// rs1 == rd, rs1==x19, rd==x19, rs1_val == 0x71fad878b369e102 and imm_val == 0x0
|
||||
// opcode: aes64ks1i ; op1:x19; dest:x19; op1val:0x71fad878b369e102; immval:0x0
|
||||
TEST_IMM_OP( aes64ks1i, x19, x19, 0x0000000000000000, 0x71fad878b369e102, 0x0, x14, 8, x15)
|
||||
|
||||
inst_2:
|
||||
// rs1==x12, rd==x10, rs1_val == 0xa4b7f979a8e45869 and imm_val == 0x0
|
||||
// opcode: aes64ks1i ; op1:x12; dest:x10; op1val:0xa4b7f979a8e45869; immval:0x0
|
||||
TEST_IMM_OP( aes64ks1i, x10, x12, 0x0000000000000000, 0xa4b7f979a8e45869, 0x0, x14, 16, x15)
|
||||
|
||||
inst_3:
|
||||
// rs1==x8, rd==x6, rs1_val == 0x0b3fd605358a9235 and imm_val == 0x1
|
||||
// opcode: aes64ks1i ; op1:x8; dest:x6; op1val:0xb3fd605358a9235; immval:0x1
|
||||
TEST_IMM_OP( aes64ks1i, x6, x8, 0x0000000000000000, 0xb3fd605358a9235, 0x1, x14, 24, x15)
|
||||
|
||||
inst_4:
|
||||
// rs1==x30, rd==x28, rs1_val == 0xb0873a0f0334fcca and imm_val == 0x7
|
||||
// opcode: aes64ks1i ; op1:x30; dest:x28; op1val:0xb0873a0f0334fcca; immval:0x7
|
||||
TEST_IMM_OP( aes64ks1i, x28, x30, 0x0000000000000000, 0xb0873a0f0334fcca, 0x7, x14, 32, x15)
|
||||
|
||||
inst_5:
|
||||
// rs1==x16, rd==x13, rs1_val == 0x5b730cad91766f62 and imm_val == 0x7
|
||||
// opcode: aes64ks1i ; op1:x16; dest:x13; op1val:0x5b730cad91766f62; immval:0x7
|
||||
TEST_IMM_OP( aes64ks1i, x13, x16, 0x0000000000000000, 0x5b730cad91766f62, 0x7, x14, 40, x15)
|
||||
|
||||
inst_6:
|
||||
// rs1==x9, rd==x7, rs1_val == 0xb7c1fc5f1efa1095 and imm_val == 0x3
|
||||
// opcode: aes64ks1i ; op1:x9; dest:x7; op1val:0xb7c1fc5f1efa1095; immval:0x3
|
||||
TEST_IMM_OP( aes64ks1i, x7, x9, 0x0000000000000000, 0xb7c1fc5f1efa1095, 0x3, x14, 48, x15)
|
||||
|
||||
inst_7:
|
||||
// rs1==x17, rd==x5, rs1_val == 0x25ae27ee4113ee60 and imm_val == 0x5
|
||||
// opcode: aes64ks1i ; op1:x17; dest:x5; op1val:0x25ae27ee4113ee60; immval:0x5
|
||||
TEST_IMM_OP( aes64ks1i, x5, x17, 0x0000000000000000, 0x25ae27ee4113ee60, 0x5, x14, 56, x15)
|
||||
|
||||
inst_8:
|
||||
// rs1==x4, rd==x21, rs1_val == 0xe3f4fca319f046a5 and imm_val == 0x6
|
||||
// opcode: aes64ks1i ; op1:x4; dest:x21; op1val:0xe3f4fca319f046a5; immval:0x6
|
||||
TEST_IMM_OP( aes64ks1i, x21, x4, 0x0000000000000000, 0xe3f4fca319f046a5, 0x6, x14, 64, x15)
|
||||
|
||||
inst_9:
|
||||
// rs1==x2, rd==x20, rs1_val == 0xff9a1b805ced7e2e and imm_val == 0x6
|
||||
// opcode: aes64ks1i ; op1:x2; dest:x20; op1val:0xff9a1b805ced7e2e; immval:0x6
|
||||
TEST_IMM_OP( aes64ks1i, x20, x2, 0x0000000000000000, 0xff9a1b805ced7e2e, 0x6, x14, 72, x15)
|
||||
|
||||
inst_10:
|
||||
// rs1==x0, rd==x1, rs1_val == 0x9722c9a6b0942992 and imm_val == 0x5
|
||||
// opcode: aes64ks1i ; op1:x0; dest:x1; op1val:0x0; immval:0x5
|
||||
TEST_IMM_OP( aes64ks1i, x1, x0, 0x0000000000000000, 0x0, 0x5, x14, 80, x15)
|
||||
|
||||
inst_11:
|
||||
// rs1==x1, rd==x2, rs1_val == 0x9bedfe390d6ddd9d and imm_val == 0x4
|
||||
// opcode: aes64ks1i ; op1:x1; dest:x2; op1val:0x9bedfe390d6ddd9d; immval:0x4
|
||||
TEST_IMM_OP( aes64ks1i, x2, x1, 0x0000000000000000, 0x9bedfe390d6ddd9d, 0x4, x14, 88, x15)
|
||||
|
||||
inst_12:
|
||||
// rs1==x13, rd==x27, rs1_val == 0xd75739f82ac177c6 and imm_val == 0x3
|
||||
// opcode: aes64ks1i ; op1:x13; dest:x27; op1val:0xd75739f82ac177c6; immval:0x3
|
||||
TEST_IMM_OP( aes64ks1i, x27, x13, 0x0000000000000000, 0xd75739f82ac177c6, 0x3, x14, 96, x15)
|
||||
|
||||
inst_13:
|
||||
// rs1==x23, rd==x22, rs1_val == 0x90efb625d9fbcdb5 and imm_val == 0x3
|
||||
// opcode: aes64ks1i ; op1:x23; dest:x22; op1val:0x90efb625d9fbcdb5; immval:0x3
|
||||
TEST_IMM_OP( aes64ks1i, x22, x23, 0x0000000000000000, 0x90efb625d9fbcdb5, 0x3, x14, 104, x15)
|
||||
|
||||
inst_14:
|
||||
// rs1==x21, rd==x18, rs1_val == 0x60067d39d169a3f8 and imm_val == 0x1
|
||||
// opcode: aes64ks1i ; op1:x21; dest:x18; op1val:0x60067d39d169a3f8; immval:0x1
|
||||
TEST_IMM_OP( aes64ks1i, x18, x21, 0x0000000000000000, 0x60067d39d169a3f8, 0x1, x14, 112, x15)
|
||||
|
||||
inst_15:
|
||||
// rs1==x18, rd==x24, rs1_val == 0xd5b9fe5cf69bdcf3 and imm_val == 0x6
|
||||
// opcode: aes64ks1i ; op1:x18; dest:x24; op1val:0xd5b9fe5cf69bdcf3; immval:0x6
|
||||
TEST_IMM_OP( aes64ks1i, x24, x18, 0x0000000000000000, 0xd5b9fe5cf69bdcf3, 0x6, x14, 120, x15)
|
||||
|
||||
inst_16:
|
||||
// rs1==x3, rd==x29, rs1_val == 0x58d548aae4921bf7 and imm_val == 0x6
|
||||
// opcode: aes64ks1i ; op1:x3; dest:x29; op1val:0x58d548aae4921bf7; immval:0x6
|
||||
TEST_IMM_OP( aes64ks1i, x29, x3, 0x0000000000000000, 0x58d548aae4921bf7, 0x6, x14, 128, x15)
|
||||
|
||||
inst_17:
|
||||
// rs1==x26, rd==x17, rs1_val == 0x2daf9ac7f5faf207 and imm_val == 0x3
|
||||
// opcode: aes64ks1i ; op1:x26; dest:x17; op1val:0x2daf9ac7f5faf207; immval:0x3
|
||||
TEST_IMM_OP( aes64ks1i, x17, x26, 0x0000000000000000, 0x2daf9ac7f5faf207, 0x3, x14, 136, x15)
|
||||
|
||||
inst_18:
|
||||
// rs1==x6, rd==x11, rs1_val == 0x3acdf61655d98c6e and imm_val == 0x3
|
||||
// opcode: aes64ks1i ; op1:x6; dest:x11; op1val:0x3acdf61655d98c6e; immval:0x3
|
||||
TEST_IMM_OP( aes64ks1i, x11, x6, 0x0000000000000000, 0x3acdf61655d98c6e, 0x3, x14, 144, x15)
|
||||
|
||||
inst_19:
|
||||
// rs1==x24, rd==x16, rs1_val == 0x436f40f274b8de87 and imm_val == 0x3
|
||||
// opcode: aes64ks1i ; op1:x24; dest:x16; op1val:0x436f40f274b8de87; immval:0x3
|
||||
TEST_IMM_OP( aes64ks1i, x16, x24, 0x0000000000000000, 0x436f40f274b8de87, 0x3, x14, 152, x2)
|
||||
|
||||
inst_20:
|
||||
// rs1==x10, rd==x31, rs1_val == 0x75a3adb3254a9493 and imm_val == 0x2
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x31; op1val:0x75a3adb3254a9493; immval:0x2
|
||||
TEST_IMM_OP( aes64ks1i, x31, x10, 0x0000000000000000, 0x75a3adb3254a9493, 0x2, x14, 160, x2)
|
||||
RVTEST_SIGBASE( x1,signature_x1_0)
|
||||
|
||||
inst_21:
|
||||
// rs1==x25, rd==x14, rs1_val == 0x03020100fffefdfc and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x25; dest:x14; op1val:0x3020100fffefdfc; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x14, x25, 0x0000000000000000, 0x3020100fffefdfc, 0xa, x1, 0, x2)
|
||||
|
||||
inst_22:
|
||||
// rs1==x11, rd==x4, rs1_val == 0xfffefdfcfbfaf9f8 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x11; dest:x4; op1val:0xfffefdfcfbfaf9f8; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x4, x11, 0x0000000000000000, 0xfffefdfcfbfaf9f8, 0xa, x1, 8, x2)
|
||||
|
||||
inst_23:
|
||||
// rs1==x27, rd==x23, rs1_val == 0xfbfaf9f8f7f6f5f4 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x27; dest:x23; op1val:0xfbfaf9f8f7f6f5f4; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x23, x27, 0x0000000000000000, 0xfbfaf9f8f7f6f5f4, 0xa, x1, 16, x2)
|
||||
|
||||
inst_24:
|
||||
// rs1==x20, rd==x30, rs1_val == 0xf7f6f5f4f3f2f1f0 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x20; dest:x30; op1val:0xf7f6f5f4f3f2f1f0; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x30, x20, 0x0000000000000000, 0xf7f6f5f4f3f2f1f0, 0xa, x1, 24, x2)
|
||||
|
||||
inst_25:
|
||||
// rs1==x29, rd==x9, rs1_val == 0xf3f2f1f0efeeedec and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x29; dest:x9; op1val:0xf3f2f1f0efeeedec; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x9, x29, 0x0000000000000000, 0xf3f2f1f0efeeedec, 0xa, x1, 32, x2)
|
||||
|
||||
inst_26:
|
||||
// rs1==x28, rd==x3, rs1_val == 0xefeeedecebeae9e8 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x28; dest:x3; op1val:0xefeeedecebeae9e8; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x3, x28, 0x0000000000000000, 0xefeeedecebeae9e8, 0xa, x1, 40, x2)
|
||||
|
||||
inst_27:
|
||||
// rs1==x31, rd==x15, rs1_val == 0xebeae9e8e7e6e5e4 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x31; dest:x15; op1val:0xebeae9e8e7e6e5e4; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x15, x31, 0x0000000000000000, 0xebeae9e8e7e6e5e4, 0xa, x1, 48, x2)
|
||||
|
||||
inst_28:
|
||||
// rs1==x5, rd==x25, rs1_val == 0xe7e6e5e4e3e2e1e0 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x5; dest:x25; op1val:0xe7e6e5e4e3e2e1e0; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x25, x5, 0x0000000000000000, 0xe7e6e5e4e3e2e1e0, 0xa, x1, 56, x2)
|
||||
|
||||
inst_29:
|
||||
// rs1==x15, rd==x0, rs1_val == 0xe3e2e1e0dfdedddc and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x15; dest:x0; op1val:0xe3e2e1e0dfdedddc; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x0, x15, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xa, x1, 64, x2)
|
||||
|
||||
inst_30:
|
||||
// rs1==x14, rd==x26, rs1_val == 0xdfdedddcdbdad9d8 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x14; dest:x26; op1val:0xdfdedddcdbdad9d8; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x26, x14, 0x0000000000000000, 0xdfdedddcdbdad9d8, 0xa, x1, 72, x2)
|
||||
|
||||
inst_31:
|
||||
// rs1==x22, rd==x12, rs1_val == 0xdbdad9d8d7d6d5d4 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x22; dest:x12; op1val:0xdbdad9d8d7d6d5d4; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x12, x22, 0x0000000000000000, 0xdbdad9d8d7d6d5d4, 0xa, x1, 80, x2)
|
||||
|
||||
inst_32:
|
||||
// rs1_val == 0xd7d6d5d4d3d2d1d0 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xd7d6d5d4d3d2d1d0; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xd7d6d5d4d3d2d1d0, 0xa, x1, 88, x2)
|
||||
|
||||
inst_33:
|
||||
// rs1_val == 0xd3d2d1d0cfcecdcc and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xd3d2d1d0cfcecdcc; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xd3d2d1d0cfcecdcc, 0xa, x1, 96, x2)
|
||||
|
||||
inst_34:
|
||||
// rs1_val == 0xcfcecdcccbcac9c8 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xcfcecdcccbcac9c8; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xcfcecdcccbcac9c8, 0xa, x1, 104, x2)
|
||||
|
||||
inst_35:
|
||||
// rs1_val == 0xcbcac9c8c7c6c5c4 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xcbcac9c8c7c6c5c4; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xcbcac9c8c7c6c5c4, 0xa, x1, 112, x2)
|
||||
|
||||
inst_36:
|
||||
// rs1_val == 0xc7c6c5c4c3c2c1c0 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xc7c6c5c4c3c2c1c0; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xc7c6c5c4c3c2c1c0, 0xa, x1, 120, x2)
|
||||
|
||||
inst_37:
|
||||
// rs1_val == 0xc3c2c1c0bfbebdbc and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xc3c2c1c0bfbebdbc; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xc3c2c1c0bfbebdbc, 0xa, x1, 128, x2)
|
||||
|
||||
inst_38:
|
||||
// rs1_val == 0xbfbebdbcbbbab9b8 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xbfbebdbcbbbab9b8; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xbfbebdbcbbbab9b8, 0xa, x1, 136, x2)
|
||||
|
||||
inst_39:
|
||||
// rs1_val == 0xbbbab9b8b7b6b5b4 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xbbbab9b8b7b6b5b4; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xbbbab9b8b7b6b5b4, 0xa, x1, 144, x2)
|
||||
|
||||
inst_40:
|
||||
// rs1_val == 0xb7b6b5b4b3b2b1b0 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xb7b6b5b4b3b2b1b0; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xb7b6b5b4b3b2b1b0, 0xa, x1, 152, x2)
|
||||
|
||||
inst_41:
|
||||
// rs1_val == 0xb3b2b1b0afaeadac and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xb3b2b1b0afaeadac; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xb3b2b1b0afaeadac, 0xa, x1, 160, x2)
|
||||
|
||||
inst_42:
|
||||
// rs1_val == 0xafaeadacabaaa9a8 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xafaeadacabaaa9a8; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xafaeadacabaaa9a8, 0xa, x1, 168, x2)
|
||||
|
||||
inst_43:
|
||||
// rs1_val == 0xabaaa9a8a7a6a5a4 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xabaaa9a8a7a6a5a4; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xabaaa9a8a7a6a5a4, 0xa, x1, 176, x2)
|
||||
|
||||
inst_44:
|
||||
// rs1_val == 0xa7a6a5a4a3a2a1a0 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xa7a6a5a4a3a2a1a0; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xa7a6a5a4a3a2a1a0, 0xa, x1, 184, x2)
|
||||
|
||||
inst_45:
|
||||
// rs1_val == 0xa3a2a1a09f9e9d9c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xa3a2a1a09f9e9d9c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xa3a2a1a09f9e9d9c, 0xa, x1, 192, x2)
|
||||
|
||||
inst_46:
|
||||
// rs1_val == 0x9f9e9d9c9b9a9998 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9f9e9d9c9b9a9998; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9f9e9d9c9b9a9998, 0xa, x1, 200, x2)
|
||||
|
||||
inst_47:
|
||||
// rs1_val == 0x9b9a999897969594 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9b9a999897969594; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9b9a999897969594, 0xa, x1, 208, x2)
|
||||
|
||||
inst_48:
|
||||
// rs1_val == 0x9796959493929190 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9796959493929190; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9796959493929190, 0xa, x1, 216, x2)
|
||||
|
||||
inst_49:
|
||||
// rs1_val == 0x939291908f8e8d8c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x939291908f8e8d8c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x939291908f8e8d8c, 0xa, x1, 224, x2)
|
||||
|
||||
inst_50:
|
||||
// rs1_val == 0x8f8e8d8c8b8a8988 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x8f8e8d8c8b8a8988; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x8f8e8d8c8b8a8988, 0xa, x1, 232, x2)
|
||||
|
||||
inst_51:
|
||||
// rs1_val == 0x8b8a898887868584 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x8b8a898887868584; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x8b8a898887868584, 0xa, x1, 240, x2)
|
||||
|
||||
inst_52:
|
||||
// rs1_val == 0x8786858483828180 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x8786858483828180; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x8786858483828180, 0xa, x1, 248, x2)
|
||||
|
||||
inst_53:
|
||||
// rs1_val == 0x838281807f7e7d7c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x838281807f7e7d7c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x838281807f7e7d7c, 0xa, x1, 256, x2)
|
||||
|
||||
inst_54:
|
||||
// rs1_val == 0x7f7e7d7c7b7a7978 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x7f7e7d7c7b7a7978; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x7f7e7d7c7b7a7978, 0xa, x1, 264, x2)
|
||||
|
||||
inst_55:
|
||||
// rs1_val == 0x7b7a797877767574 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x7b7a797877767574; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x7b7a797877767574, 0xa, x1, 272, x2)
|
||||
|
||||
inst_56:
|
||||
// rs1_val == 0x7776757473727170 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x7776757473727170; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x7776757473727170, 0xa, x1, 280, x2)
|
||||
|
||||
inst_57:
|
||||
// rs1_val == 0x737271706f6e6d6c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x737271706f6e6d6c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x737271706f6e6d6c, 0xa, x1, 288, x2)
|
||||
|
||||
inst_58:
|
||||
// rs1_val == 0x6f6e6d6c6b6a6968 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x6f6e6d6c6b6a6968; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x6f6e6d6c6b6a6968, 0xa, x1, 296, x2)
|
||||
|
||||
inst_59:
|
||||
// rs1_val == 0x6b6a696867666564 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x6b6a696867666564; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x6b6a696867666564, 0xa, x1, 304, x2)
|
||||
|
||||
inst_60:
|
||||
// rs1_val == 0x6766656463626160 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x6766656463626160; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x6766656463626160, 0xa, x1, 312, x2)
|
||||
|
||||
inst_61:
|
||||
// rs1_val == 0x636261605f5e5d5c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x636261605f5e5d5c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x636261605f5e5d5c, 0xa, x1, 320, x2)
|
||||
|
||||
inst_62:
|
||||
// rs1_val == 0x5f5e5d5c5b5a5958 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x5f5e5d5c5b5a5958; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x5f5e5d5c5b5a5958, 0xa, x1, 328, x2)
|
||||
|
||||
inst_63:
|
||||
// rs1_val == 0x5b5a595857565554 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x5b5a595857565554; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x5b5a595857565554, 0xa, x1, 336, x2)
|
||||
|
||||
inst_64:
|
||||
// rs1_val == 0x5756555453525150 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x5756555453525150; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x5756555453525150, 0xa, x1, 344, x2)
|
||||
|
||||
inst_65:
|
||||
// rs1_val == 0x535251504f4e4d4c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x535251504f4e4d4c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x535251504f4e4d4c, 0xa, x1, 352, x2)
|
||||
|
||||
inst_66:
|
||||
// rs1_val == 0x4f4e4d4c4b4a4948 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x4f4e4d4c4b4a4948; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x4f4e4d4c4b4a4948, 0xa, x1, 360, x2)
|
||||
|
||||
inst_67:
|
||||
// rs1_val == 0x4b4a494847464544 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x4b4a494847464544; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x4b4a494847464544, 0xa, x1, 368, x2)
|
||||
|
||||
inst_68:
|
||||
// rs1_val == 0x4746454443424140 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x4746454443424140; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x4746454443424140, 0xa, x1, 376, x2)
|
||||
|
||||
inst_69:
|
||||
// rs1_val == 0x434241403f3e3d3c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x434241403f3e3d3c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x434241403f3e3d3c, 0xa, x1, 384, x2)
|
||||
|
||||
inst_70:
|
||||
// rs1_val == 0x3f3e3d3c3b3a3938 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x3f3e3d3c3b3a3938; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x3f3e3d3c3b3a3938, 0xa, x1, 392, x2)
|
||||
|
||||
inst_71:
|
||||
// rs1_val == 0x3b3a393837363534 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x3b3a393837363534; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x3b3a393837363534, 0xa, x1, 400, x2)
|
||||
|
||||
inst_72:
|
||||
// rs1_val == 0x3736353433323130 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x3736353433323130; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x3736353433323130, 0xa, x1, 408, x2)
|
||||
|
||||
inst_73:
|
||||
// rs1_val == 0x333231302f2e2d2c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x333231302f2e2d2c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x333231302f2e2d2c, 0xa, x1, 416, x2)
|
||||
|
||||
inst_74:
|
||||
// rs1_val == 0x2f2e2d2c2b2a2928 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x2f2e2d2c2b2a2928; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x2f2e2d2c2b2a2928, 0xa, x1, 424, x2)
|
||||
|
||||
inst_75:
|
||||
// rs1_val == 0x2b2a292827262524 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x2b2a292827262524; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x2b2a292827262524, 0xa, x1, 432, x2)
|
||||
|
||||
inst_76:
|
||||
// rs1_val == 0x2726252423222120 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x2726252423222120; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x2726252423222120, 0xa, x1, 440, x2)
|
||||
|
||||
inst_77:
|
||||
// rs1_val == 0x232221201f1e1d1c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x232221201f1e1d1c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x232221201f1e1d1c, 0xa, x1, 448, x2)
|
||||
|
||||
inst_78:
|
||||
// rs1_val == 0x1f1e1d1c1b1a1918 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x1f1e1d1c1b1a1918; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x1f1e1d1c1b1a1918, 0xa, x1, 456, x2)
|
||||
|
||||
inst_79:
|
||||
// rs1_val == 0x1b1a191817161514 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x1b1a191817161514; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x1b1a191817161514, 0xa, x1, 464, x2)
|
||||
|
||||
inst_80:
|
||||
// rs1_val == 0x1716151413121110 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x1716151413121110; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x1716151413121110, 0xa, x1, 472, x2)
|
||||
|
||||
inst_81:
|
||||
// rs1_val == 0x131211100f0e0d0c and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x131211100f0e0d0c; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x131211100f0e0d0c, 0xa, x1, 480, x2)
|
||||
|
||||
inst_82:
|
||||
// rs1_val == 0x0f0e0d0c0b0a0908 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xf0e0d0c0b0a0908; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xf0e0d0c0b0a0908, 0xa, x1, 488, x2)
|
||||
|
||||
inst_83:
|
||||
// rs1_val == 0x0b0a090807060504 and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xb0a090807060504; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xb0a090807060504, 0xa, x1, 496, x2)
|
||||
|
||||
inst_84:
|
||||
// rs1_val == 0x9722c9a6b0942992 and imm_val == 0x5
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0x9722c9a6b0942992; immval:0x5
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0x9722c9a6b0942992, 0x5, x1, 504, x2)
|
||||
|
||||
inst_85:
|
||||
// rs1_val == 0xe3e2e1e0dfdedddc and imm_val == 0xA
|
||||
// opcode: aes64ks1i ; op1:x10; dest:x11; op1val:0xe3e2e1e0dfdedddc; immval:0xa
|
||||
TEST_IMM_OP( aes64ks1i, x11, x10, 0x0000000000000000, 0xe3e2e1e0dfdedddc, 0xa, x1, 512, x2)
|
||||
#endif
|
||||
|
||||
|
||||
RVTEST_CODE_END
|
||||
RVMODEL_HALT
|
||||
|
||||
RVTEST_DATA_BEGIN
|
||||
.align 4
|
||||
rvtest_data:
|
||||
.word 0xbabecafe
|
||||
RVTEST_DATA_END
|
||||
|
||||
RVMODEL_DATA_BEGIN
|
||||
|
||||
|
||||
signature_x14_0:
|
||||
.fill 0*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x14_1:
|
||||
.fill 21*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
|
||||
signature_x1_0:
|
||||
.fill 65*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#ifdef rvtest_mtrap_routine
|
||||
|
||||
mtrap_sigptr:
|
||||
.fill 64*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef rvtest_gpr_save
|
||||
|
||||
gpr_save:
|
||||
.fill 32*(XLEN/32),4,0xdeadbeef
|
||||
|
||||
#endif
|
||||
|
||||
RVMODEL_DATA_END
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user