forked from Github_Repos/cvw
		
	Merge branch 'main' of https://github.com/davidharrishmc/riscv-wally into main
This commit is contained in:
		
						commit
						bab7335bee
					
				@ -1 +1 @@
 | 
			
		||||
Subproject commit 307c77b26e070ae85ffea665ad9b642b40e33c86
 | 
			
		||||
Subproject commit be67c99bd461742aa1c100bcc0732657faae2230
 | 
			
		||||
@ -38,12 +38,13 @@
 | 
			
		||||
`define IEEE754 1
 | 
			
		||||
 | 
			
		||||
// MISA RISC-V configuration per specification
 | 
			
		||||
`define MISA (32'h00000104 | 1 << 5 | 0 << 3 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0 )
 | 
			
		||||
//16 - quad 3 - double 5 - single
 | 
			
		||||
`define MISA (32'h00000104 | 1 << 5 | 1 << 3 | 1 << 16 | 1 << 18 | 1 << 20 | 1 << 12 | 1 << 0 )
 | 
			
		||||
`define ZICSR_SUPPORTED 1
 | 
			
		||||
`define ZIFENCEI_SUPPORTED 1
 | 
			
		||||
`define COUNTERS 32
 | 
			
		||||
`define ZICOUNTERS_SUPPORTED 1
 | 
			
		||||
`define ZFH_SUPPORTED 0
 | 
			
		||||
`define ZFH_SUPPORTED 1
 | 
			
		||||
 | 
			
		||||
/// Microarchitectural Features
 | 
			
		||||
`define UARCH_PIPELINED 1
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										52
									
								
								pipelined/regression/fp.do
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								pipelined/regression/fp.do
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,52 @@
 | 
			
		||||
# wally-pipelined.do 
 | 
			
		||||
#
 | 
			
		||||
# Modification by Oklahoma State University & Harvey Mudd College
 | 
			
		||||
# Use with Testbench 
 | 
			
		||||
# James Stine, 2008; David Harris 2021
 | 
			
		||||
# Go Cowboys!!!!!!
 | 
			
		||||
#
 | 
			
		||||
# Takes 1:10 to run RV64IC tests using gui
 | 
			
		||||
 | 
			
		||||
# run with vsim -do "do wally-pipelined.do rv64ic riscvarchtest-64m"
 | 
			
		||||
 | 
			
		||||
# Use this wally-pipelined.do file to run this example.
 | 
			
		||||
# Either bring up ModelSim and type the following at the "ModelSim>" prompt:
 | 
			
		||||
#     do wally-pipelined.do
 | 
			
		||||
# or, to run from a shell, type the following at the shell prompt:
 | 
			
		||||
#     vsim -do wally-pipelined.do -c
 | 
			
		||||
# (omit the "-c" to see the GUI while running from the shell)
 | 
			
		||||
 | 
			
		||||
onbreak {resume}
 | 
			
		||||
 | 
			
		||||
# create library
 | 
			
		||||
if [file exists work] {
 | 
			
		||||
    vdel -all
 | 
			
		||||
}
 | 
			
		||||
vlib work
 | 
			
		||||
 | 
			
		||||
# compile source files
 | 
			
		||||
# suppress spurious warnngs about 
 | 
			
		||||
# "Extra checking for conflicts with always_comb done at vopt time"
 | 
			
		||||
# because vsim will run vopt
 | 
			
		||||
 | 
			
		||||
# start and run simulation
 | 
			
		||||
# remove +acc flag for faster sim during regressions if there is no need to access internal signals
 | 
			
		||||
# $num = the added words after the call
 | 
			
		||||
vlog +incdir+../config/$1 +incdir+../config/shared ../testbench/testbench-fp.sv ../src/fpu/*.sv -suppress 2583,7063,8607,2697 
 | 
			
		||||
 | 
			
		||||
vsim -voptargs=+acc work.testbenchfp -G TEST=$2
 | 
			
		||||
 | 
			
		||||
view wave
 | 
			
		||||
#-- display input and output signals as hexidecimal values
 | 
			
		||||
#do ./wave-dos/peripheral-waves.do
 | 
			
		||||
#add log -recursive /*
 | 
			
		||||
#do wave.do deal with when ready
 | 
			
		||||
 | 
			
		||||
do wave-fpu.do
 | 
			
		||||
 | 
			
		||||
#-- Run the Simulation 
 | 
			
		||||
#run 3600 
 | 
			
		||||
run -all
 | 
			
		||||
noview testbench-fp.sv
 | 
			
		||||
view wave
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										11
									
								
								pipelined/regression/sim-fp
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										11
									
								
								pipelined/regression/sim-fp
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,11 @@
 | 
			
		||||
 | 
			
		||||
# cvtint - test integer conversion unit (fcvtint)
 | 
			
		||||
# cvtfp  - test floating-point conversion unit (fcvtfp)
 | 
			
		||||
# cmp    - test comparison unit's LT, LE, EQ opperations (fcmp)
 | 
			
		||||
# add    - test addition
 | 
			
		||||
# sub    - test subtraction
 | 
			
		||||
# div    - test division
 | 
			
		||||
# sqrt   - test square root
 | 
			
		||||
# all    - test everything
 | 
			
		||||
 | 
			
		||||
vsim -do "do fp.do rv64fp mul"
 | 
			
		||||
							
								
								
									
										10
									
								
								pipelined/regression/sim-fp-batch
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										10
									
								
								pipelined/regression/sim-fp-batch
									
									
									
									
									
										Executable file
									
								
							@ -0,0 +1,10 @@
 | 
			
		||||
# cvtint - test integer conversion unit (fcvtint)
 | 
			
		||||
# cvtfp  - test floating-point conversion unit (fcvtfp)
 | 
			
		||||
# cmp    - test comparison unit's LT, LE, EQ opperations (fcmp)
 | 
			
		||||
# add    - test addition
 | 
			
		||||
# sub    - test subtraction
 | 
			
		||||
# div    - test division
 | 
			
		||||
# sqrt   - test square root
 | 
			
		||||
# all    - test everything
 | 
			
		||||
 | 
			
		||||
vsim -c -do "do fp.do rv64fp fma"
 | 
			
		||||
@ -8,7 +8,7 @@ if not os.path.isfile(sys.path[0]+'/slack-webhook-url.txt'):
 | 
			
		||||
    print('slack-notifier.py can help let you know when your sim is done.')
 | 
			
		||||
    print('To make it work, please supply your Slack bot webhook URL in:')
 | 
			
		||||
    print(sys.path[0]+'/slack-webhook-url.txt')
 | 
			
		||||
    print('Ask Ben for the Tera Slack Notifier Tutorial for more details.')
 | 
			
		||||
    print('Tutorial for slack webhook urls: https://bit.ly/BenSlackNotifier')
 | 
			
		||||
    print('==============================================================')
 | 
			
		||||
else:
 | 
			
		||||
    urlFile = open(sys.path[0]+'/slack-webhook-url.txt','r')
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										102
									
								
								pipelined/regression/wave-fpu.do
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										102
									
								
								pipelined/regression/wave-fpu.do
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,102 @@
 | 
			
		||||
 | 
			
		||||
add wave -noupdate /testbenchfp/clk
 | 
			
		||||
add wave -noupdate -radix decimal /testbenchfp/VectorNum
 | 
			
		||||
add wave -group Other -noupdate /testbenchfp/FrmNum
 | 
			
		||||
add wave -group Other -noupdate /testbenchfp/X
 | 
			
		||||
add wave -group Other -noupdate /testbenchfp/Y
 | 
			
		||||
add wave -group Other -noupdate /testbenchfp/Z
 | 
			
		||||
add wave -group Other -noupdate /testbenchfp/Res
 | 
			
		||||
add wave -group Other -noupdate /testbenchfp/Ans
 | 
			
		||||
 | 
			
		||||
add wave -group Rne -noupdate /testbenchfp/FmaRneX
 | 
			
		||||
add wave -group Rne -noupdate /testbenchfp/FmaRneY
 | 
			
		||||
add wave -group Rne -noupdate /testbenchfp/FmaRneZ
 | 
			
		||||
add wave -group Rne -noupdate /testbenchfp/FmaRneRes
 | 
			
		||||
add wave -group Rne -noupdate /testbenchfp/FmaRneAns
 | 
			
		||||
add wave -group Rz -noupdate /testbenchfp/FmaRzX
 | 
			
		||||
add wave -group Rz -noupdate /testbenchfp/FmaRzY
 | 
			
		||||
add wave -group Rz -noupdate /testbenchfp/FmaRzZ
 | 
			
		||||
add wave -group Rz -noupdate /testbenchfp/FmaRzRes
 | 
			
		||||
add wave -group Rz -noupdate /testbenchfp/FmaRzAns
 | 
			
		||||
add wave -group Ru -noupdate /testbenchfp/FmaRuX
 | 
			
		||||
add wave -group Ru -noupdate /testbenchfp/FmaRuY
 | 
			
		||||
add wave -group Ru -noupdate /testbenchfp/FmaRuZ
 | 
			
		||||
add wave -group Ru -noupdate /testbenchfp/FmaRuRes
 | 
			
		||||
add wave -group Ru -noupdate /testbenchfp/FmaRuAns
 | 
			
		||||
add wave -group Rd -noupdate /testbenchfp/FmaRdX
 | 
			
		||||
add wave -group Rd -noupdate /testbenchfp/FmaRdY
 | 
			
		||||
add wave -group Rd -noupdate /testbenchfp/FmaRdZ
 | 
			
		||||
add wave -group Rd -noupdate /testbenchfp/FmaRdRes
 | 
			
		||||
add wave -group Rd -noupdate /testbenchfp/FmaRdAns
 | 
			
		||||
add wave -group Rnm -noupdate /testbenchfp/FmaRnmX
 | 
			
		||||
add wave -group Rnm -noupdate /testbenchfp/FmaRnmY
 | 
			
		||||
add wave -group Rnm -noupdate /testbenchfp/FmaRnmZ
 | 
			
		||||
add wave -group Rnm -noupdate /testbenchfp/FmaRnmRes
 | 
			
		||||
add wave -group Rnm -noupdate /testbenchfp/FmaRnmAns
 | 
			
		||||
add wave -group AllSignals -noupdate /*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/expadd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/mult/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/align/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/sign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/add/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rne/loa/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rne/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rne/normalize/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rne/fmaround/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rne/resultsign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rne/fmaflags/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rne/resultselect/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/expadd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/mult/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/align/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/sign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/add/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rz/loa/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rz/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rz/normalize/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rz/fmaround/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rz/resultsign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rz/fmaflags/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rz/resultselect/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/expadd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/mult/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/align/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/sign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/add/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1ru/loa/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2ru/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2ru/normalize/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2ru/fmaround/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2ru/resultsign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2ru/fmaflags/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2ru/resultselect/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/expadd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/mult/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/align/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/sign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/add/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rd/loa/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rd/normalize/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rd/fmaround/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rd/resultsign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rd/fmaflags/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rd/resultselect/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/expadd/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/mult/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/align/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/sign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/add/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma1rnm/loa/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rnm/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rnm/normalize/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rnm/fmaround/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rnm/resultsign/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rnm/fmaflags/*
 | 
			
		||||
add wave -group AllSignals -noupdate /testbenchfp/fma2rnm/resultselect/*
 | 
			
		||||
@ -1,6 +1,6 @@
 | 
			
		||||
 | 
			
		||||
`include "wally-config.vh"
 | 
			
		||||
module cvtfp (
 | 
			
		||||
module fcvtfp (
 | 
			
		||||
    input logic [10:0] XExpE,   // input's exponent
 | 
			
		||||
    input logic [52:0] XManE,   // input's mantissa
 | 
			
		||||
    input logic XSgnE,          // input's sign
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
`include "wally-config.vh"
 | 
			
		||||
// `include "../../config/rv64icfd/wally-config.vh"
 | 
			
		||||
//  `define XLEN 64
 | 
			
		||||
module fcvt (
 | 
			
		||||
module fcvtint (
 | 
			
		||||
	input logic             XSgnE,      // X's sign
 | 
			
		||||
    input logic [10:0]      XExpE,      // X's exponent
 | 
			
		||||
    input logic [52:0]      XManE,     // X's fraction
 | 
			
		||||
 | 
			
		||||
@ -213,12 +213,12 @@ module fpu (
 | 
			
		||||
         .FDivBusyE, .done(FDivSqrtDoneE), .AS_Result(FDivResM), .Flags(FDivFlgM));
 | 
			
		||||
 | 
			
		||||
   // other FP execution units
 | 
			
		||||
   cvtfp cvtfp (.XExpE, .XManE, .XSgnE, .XZeroE, .XDenormE, .XInfE, .XNaNE, .XSNaNE, .FrmE, .FmtE, .CvtFpResE, .CvtFpFlgE);
 | 
			
		||||
   fcvtfp fcvtfp (.XExpE, .XManE, .XSgnE, .XZeroE, .XDenormE, .XInfE, .XNaNE, .XSNaNE, .FrmE, .FmtE, .CvtFpResE, .CvtFpFlgE);
 | 
			
		||||
   fcmp fcmp (.FmtE, .FOpCtrlE, .XSgnE, .YSgnE, .XExpE, .YExpE, .XManE, .YManE, 
 | 
			
		||||
            .XZeroE, .YZeroE, .XNaNE, .YNaNE, .XSNaNE, .YSNaNE, .FSrcXE, .FSrcYE, .CmpNVE, .CmpResE);
 | 
			
		||||
   fsgn fsgn (.SgnOpCodeE(FOpCtrlE[1:0]), .XSgnE, .YSgnE, .FSrcXE, .FmtE, .SgnResE);
 | 
			
		||||
   fclassify fclassify (.XSgnE, .XDenormE, .XZeroE, .XNaNE, .XInfE, .XNormE, .XSNaNE, .ClassResE);
 | 
			
		||||
   fcvt fcvt (.XSgnE, .XExpE, .XManE, .XZeroE, .XNaNE, .XInfE, .XDenormE, .ForwardedSrcAE, .FOpCtrlE, .FmtE, .FrmE,
 | 
			
		||||
   fcvtint fcvtint (.XSgnE, .XExpE, .XManE, .XZeroE, .XNaNE, .XInfE, .XDenormE, .ForwardedSrcAE, .FOpCtrlE, .FmtE, .FrmE,
 | 
			
		||||
   .CvtResE, .CvtFlgE);
 | 
			
		||||
 | 
			
		||||
   // data to be stored in memory - to IEU
 | 
			
		||||
 | 
			
		||||
@ -2,7 +2,7 @@
 | 
			
		||||
 | 
			
		||||
module unpack ( 
 | 
			
		||||
    input logic  [`FLEN-1:0]        X, Y, Z,    // inputs from register file
 | 
			
		||||
    input logic  [`FPSIZES/3:0]     FmtE,       // format signal 00 - single 10 - double 11 - quad 10 - half
 | 
			
		||||
    input logic  [`FPSIZES/3:0]     FmtE,       // format signal 00 - single 01 - double 11 - quad 10 - half
 | 
			
		||||
    output logic                    XSgnE, YSgnE, ZSgnE,    // sign bits of XYZ
 | 
			
		||||
    output logic [`NE-1:0]          XExpE, YExpE, ZExpE,    // exponents of XYZ (converted to largest supported precision)
 | 
			
		||||
    output logic [`NF:0]            XManE, YManE, ZManE,    // mantissas of XYZ (converted to largest supported precision)
 | 
			
		||||
@ -50,7 +50,6 @@ module unpack (
 | 
			
		||||
    
 | 
			
		||||
 | 
			
		||||
    end else if (`FPSIZES == 2) begin   // if there are 2 floating point formats supported
 | 
			
		||||
 | 
			
		||||
        //***need better names for these constants
 | 
			
		||||
        // largest format | smaller format
 | 
			
		||||
        //----------------------------------
 | 
			
		||||
@ -339,9 +338,9 @@ module unpack (
 | 
			
		||||
                    ZExpE = {ZLen1[`D_LEN-2], {`Q_NE-`D_NE{~ZLen1[`D_LEN-2]&~ZExpZero|ZExpMaxE}}, ZLen1[`D_LEN-3:`D_NF]}; 
 | 
			
		||||
 | 
			
		||||
                    // extract the fraction and add the nessesary trailing zeros
 | 
			
		||||
                    XFracE = {XLen1[`D_NE-1:0], (`Q_NF-`D_NE)'(0)};
 | 
			
		||||
                    YFracE = {YLen1[`D_NE-1:0], (`Q_NF-`D_NE)'(0)};
 | 
			
		||||
                    ZFracE = {ZLen1[`D_NE-1:0], (`Q_NF-`D_NE)'(0)};
 | 
			
		||||
                    XFracE = {XLen1[`D_NF-1:0], (`Q_NF-`D_NF)'(0)};
 | 
			
		||||
                    YFracE = {YLen1[`D_NF-1:0], (`Q_NF-`D_NF)'(0)};
 | 
			
		||||
                    ZFracE = {ZLen1[`D_NF-1:0], (`Q_NF-`D_NF)'(0)};
 | 
			
		||||
 | 
			
		||||
                    // is the exponent non-zero
 | 
			
		||||
                    XExpNonzero = |XLen1[`D_LEN-2:`D_NE]; 
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										1538
									
								
								pipelined/testbench/testbench-fp.sv
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1538
									
								
								pipelined/testbench/testbench-fp.sv
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										587
									
								
								pipelined/testbench/tests-fp.vh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										587
									
								
								pipelined/testbench/tests-fp.vh
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,587 @@
 | 
			
		||||
///////////////////////////////////////////
 | 
			
		||||
// tests.vh
 | 
			
		||||
//
 | 
			
		||||
// Written: David_Harris@hmc.edu 7 October 2021
 | 
			
		||||
// Modified: 
 | 
			
		||||
//
 | 
			
		||||
// Purpose: List of tests to apply
 | 
			
		||||
// 
 | 
			
		||||
// A component of the Wally configurable RISC-V project.
 | 
			
		||||
// 
 | 
			
		||||
// Copyright (C) 2021 Harvey Mudd College & Oklahoma State University
 | 
			
		||||
//
 | 
			
		||||
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
 | 
			
		||||
// files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, 
 | 
			
		||||
// modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software 
 | 
			
		||||
// is furnished to do so, subject to the following conditions:
 | 
			
		||||
//
 | 
			
		||||
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 | 
			
		||||
//
 | 
			
		||||
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 
 | 
			
		||||
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS 
 | 
			
		||||
// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT 
 | 
			
		||||
// OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
///////////////////////////////////////////
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
`define PATH "../../tests/fp/vectors/"
 | 
			
		||||
`define ADD_OPCTRL 3'b110
 | 
			
		||||
`define MUL_OPCTRL 3'b100
 | 
			
		||||
`define SUB_OPCTRL 3'b111
 | 
			
		||||
`define FADD_OPCTRL 3'b000
 | 
			
		||||
`define DIV_OPCTRL 3'b000
 | 
			
		||||
`define SQRT_OPCTRL 3'b001
 | 
			
		||||
`define LE_OPCTRL 3'b011
 | 
			
		||||
`define LT_OPCTRL 3'b001
 | 
			
		||||
`define EQ_OPCTRL 3'b010
 | 
			
		||||
`define TO_UI_OPCTRL   3'b011
 | 
			
		||||
`define TO_I_OPCTRL    3'b001
 | 
			
		||||
`define TO_UL_OPCTRL   3'b111
 | 
			
		||||
`define TO_L_OPCTRL    3'b101
 | 
			
		||||
`define FROM_UI_OPCTRL 3'b010
 | 
			
		||||
`define FROM_I_OPCTRL  3'b000
 | 
			
		||||
`define FROM_UL_OPCTRL 3'b110
 | 
			
		||||
`define FROM_L_OPCTRL  3'b100
 | 
			
		||||
`define RNE 3'b000
 | 
			
		||||
`define RZ  3'b001
 | 
			
		||||
`define RU  3'b011
 | 
			
		||||
`define RD  3'b010
 | 
			
		||||
`define RNM 3'b100
 | 
			
		||||
`define FMAUNIT 0
 | 
			
		||||
`define DIVUNIT 1
 | 
			
		||||
`define CVTINTUNIT 2
 | 
			
		||||
`define CVTFPUNIT 3
 | 
			
		||||
`define CMPUNIT 4
 | 
			
		||||
 | 
			
		||||
string f16rv32cvtint[] = '{
 | 
			
		||||
	"f16_to_i32_rne.tv",
 | 
			
		||||
	"f16_to_i32_rz.tv",
 | 
			
		||||
	"f16_to_i32_ru.tv",
 | 
			
		||||
	"f16_to_i32_rd.tv",
 | 
			
		||||
	"f16_to_i32_rnm.tv",
 | 
			
		||||
	"f16_to_ui32_rne.tv",
 | 
			
		||||
	"f16_to_ui32_rz.tv",
 | 
			
		||||
	"f16_to_ui32_ru.tv",
 | 
			
		||||
	"f16_to_ui32_rd.tv",
 | 
			
		||||
	"f16_to_ui32_rnm.tv",
 | 
			
		||||
	"ui32_to_f16_rne.tv",
 | 
			
		||||
	"ui32_to_f16_rz.tv",
 | 
			
		||||
	"ui32_to_f16_ru.tv",
 | 
			
		||||
	"ui32_to_f16_rd.tv",
 | 
			
		||||
	"ui32_to_f16_rnm.tv",
 | 
			
		||||
	"i32_to_f16_rne.tv",
 | 
			
		||||
	"i32_to_f16_rz.tv",
 | 
			
		||||
	"i32_to_f16_ru.tv",
 | 
			
		||||
	"i32_to_f16_rd.tv",
 | 
			
		||||
	"i32_to_f16_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16rv64cvtint[] = '{
 | 
			
		||||
	"f16_to_ui64_rne.tv",
 | 
			
		||||
	"f16_to_ui64_rz.tv",
 | 
			
		||||
	"f16_to_ui64_ru.tv",
 | 
			
		||||
	"f16_to_ui64_rd.tv",
 | 
			
		||||
	"f16_to_ui64_rnm.tv",
 | 
			
		||||
	"f16_to_i64_rne.tv",
 | 
			
		||||
	"f16_to_i64_rz.tv",
 | 
			
		||||
	"f16_to_i64_ru.tv",
 | 
			
		||||
	"f16_to_i64_rd.tv",
 | 
			
		||||
	"f16_to_i64_rnm.tv",
 | 
			
		||||
	"ui64_to_f16_rne.tv",
 | 
			
		||||
	"ui64_to_f16_rz.tv",
 | 
			
		||||
	"ui64_to_f16_ru.tv",
 | 
			
		||||
	"ui64_to_f16_rd.tv",
 | 
			
		||||
	"ui64_to_f16_rnm.tv",
 | 
			
		||||
	"i64_to_f16_rne.tv",
 | 
			
		||||
	"i64_to_f16_rz.tv",
 | 
			
		||||
	"i64_to_f16_ru.tv",
 | 
			
		||||
	"i64_to_f16_rd.tv",
 | 
			
		||||
	"i64_to_f16_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32rv32cvtint[] = '{
 | 
			
		||||
	"ui32_to_f32_rne.tv",
 | 
			
		||||
	"ui32_to_f32_rz.tv",
 | 
			
		||||
	"ui32_to_f32_ru.tv",
 | 
			
		||||
	"ui32_to_f32_rd.tv",
 | 
			
		||||
	"ui32_to_f32_rnm.tv",
 | 
			
		||||
	"i32_to_f32_rne.tv",
 | 
			
		||||
	"i32_to_f32_rz.tv",
 | 
			
		||||
	"i32_to_f32_ru.tv",
 | 
			
		||||
	"i32_to_f32_rd.tv",
 | 
			
		||||
	"i32_to_f32_rnm.tv",
 | 
			
		||||
	"f32_to_ui32_rne.tv",
 | 
			
		||||
	"f32_to_ui32_rz.tv",
 | 
			
		||||
	"f32_to_ui32_ru.tv",
 | 
			
		||||
	"f32_to_ui32_rd.tv",
 | 
			
		||||
	"f32_to_ui32_rnm.tv",
 | 
			
		||||
	"f32_to_i32_rne.tv",
 | 
			
		||||
	"f32_to_i32_rz.tv",
 | 
			
		||||
	"f32_to_i32_ru.tv",
 | 
			
		||||
	"f32_to_i32_rd.tv",
 | 
			
		||||
	"f32_to_i32_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32rv64cvtint[] = '{
 | 
			
		||||
	"ui64_to_f32_rne.tv",
 | 
			
		||||
	"ui64_to_f32_rz.tv",
 | 
			
		||||
	"ui64_to_f32_ru.tv",
 | 
			
		||||
	"ui64_to_f32_rd.tv",
 | 
			
		||||
	"ui64_to_f32_rnm.tv",
 | 
			
		||||
	"i64_to_f32_rne.tv",
 | 
			
		||||
	"i64_to_f32_rz.tv",
 | 
			
		||||
	"i64_to_f32_ru.tv",
 | 
			
		||||
	"i64_to_f32_rd.tv",
 | 
			
		||||
	"i64_to_f32_rnm.tv",
 | 
			
		||||
	"f32_to_ui64_rne.tv",
 | 
			
		||||
	"f32_to_ui64_rz.tv",
 | 
			
		||||
	"f32_to_ui64_ru.tv",
 | 
			
		||||
	"f32_to_ui64_rd.tv",
 | 
			
		||||
	"f32_to_ui64_rnm.tv",
 | 
			
		||||
	"f32_to_i64_rne.tv",
 | 
			
		||||
	"f32_to_i64_rz.tv",
 | 
			
		||||
	"f32_to_i64_ru.tv",
 | 
			
		||||
	"f32_to_i64_rd.tv",
 | 
			
		||||
	"f32_to_i64_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
string f64rv32cvtint[] = '{
 | 
			
		||||
	"ui32_to_f64_rne.tv",
 | 
			
		||||
	"ui32_to_f64_rz.tv",
 | 
			
		||||
	"ui32_to_f64_ru.tv",
 | 
			
		||||
	"ui32_to_f64_rd.tv",
 | 
			
		||||
	"ui32_to_f64_rnm.tv",
 | 
			
		||||
	"i32_to_f64_rne.tv",
 | 
			
		||||
	"i32_to_f64_rz.tv",
 | 
			
		||||
	"i32_to_f64_ru.tv",
 | 
			
		||||
	"i32_to_f64_rd.tv",
 | 
			
		||||
	"i32_to_f64_rnm.tv",
 | 
			
		||||
	"f64_to_ui32_rne.tv",
 | 
			
		||||
	"f64_to_ui32_rz.tv",
 | 
			
		||||
	"f64_to_ui32_ru.tv",
 | 
			
		||||
	"f64_to_ui32_rd.tv",
 | 
			
		||||
	"f64_to_ui32_rnm.tv",
 | 
			
		||||
	"f64_to_i32_rne.tv",
 | 
			
		||||
	"f64_to_i32_rz.tv",
 | 
			
		||||
	"f64_to_i32_ru.tv",
 | 
			
		||||
	"f64_to_i32_rd.tv",
 | 
			
		||||
	"f64_to_i32_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64rv64cvtint[] = '{
 | 
			
		||||
	"ui64_to_f64_rne.tv",
 | 
			
		||||
	"ui64_to_f64_rz.tv",
 | 
			
		||||
	"ui64_to_f64_ru.tv",
 | 
			
		||||
	"ui64_to_f64_rd.tv",
 | 
			
		||||
	"ui64_to_f64_rnm.tv",
 | 
			
		||||
	"i64_to_f64_rne.tv",
 | 
			
		||||
	"i64_to_f64_rz.tv",
 | 
			
		||||
	"i64_to_f64_ru.tv",
 | 
			
		||||
	"i64_to_f64_rd.tv",
 | 
			
		||||
	"i64_to_f64_rnm.tv",
 | 
			
		||||
	"f64_to_ui64_rne.tv",
 | 
			
		||||
	"f64_to_ui64_rz.tv",
 | 
			
		||||
	"f64_to_ui64_ru.tv",
 | 
			
		||||
	"f64_to_ui64_rd.tv",
 | 
			
		||||
	"f64_to_ui64_rnm.tv",
 | 
			
		||||
	"f64_to_i64_rne.tv",
 | 
			
		||||
	"f64_to_i64_rz.tv",
 | 
			
		||||
	"f64_to_i64_ru.tv",
 | 
			
		||||
	"f64_to_i64_rd.tv",
 | 
			
		||||
	"f64_to_i64_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128rv64cvtint[] = '{
 | 
			
		||||
	"ui64_to_f128_rne.tv",
 | 
			
		||||
	"ui64_to_f128_rz.tv",
 | 
			
		||||
	"ui64_to_f128_ru.tv",
 | 
			
		||||
	"ui64_to_f128_rd.tv",
 | 
			
		||||
	"ui64_to_f128_rnm.tv",
 | 
			
		||||
	"i64_to_f128_rne.tv",
 | 
			
		||||
	"i64_to_f128_rz.tv",
 | 
			
		||||
	"i64_to_f128_ru.tv",
 | 
			
		||||
	"i64_to_f128_rd.tv",
 | 
			
		||||
	"i64_to_f128_rnm.tv",
 | 
			
		||||
	"f128_to_ui64_rne.tv",
 | 
			
		||||
	"f128_to_ui64_rz.tv",
 | 
			
		||||
	"f128_to_ui64_ru.tv",
 | 
			
		||||
	"f128_to_ui64_rd.tv",
 | 
			
		||||
	"f128_to_ui64_rnm.tv",
 | 
			
		||||
	"f128_to_i64_rne.tv",
 | 
			
		||||
	"f128_to_i64_rz.tv",
 | 
			
		||||
	"f128_to_i64_ru.tv",
 | 
			
		||||
	"f128_to_i64_rd.tv",
 | 
			
		||||
	"f128_to_i64_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128rv32cvtint[] = '{
 | 
			
		||||
	"ui32_to_f128_rne.tv",
 | 
			
		||||
	"ui32_to_f128_rz.tv",
 | 
			
		||||
	"ui32_to_f128_ru.tv",
 | 
			
		||||
	"ui32_to_f128_rd.tv",
 | 
			
		||||
	"ui32_to_f128_rnm.tv",
 | 
			
		||||
	"i32_to_f128_rne.tv",
 | 
			
		||||
	"i32_to_f128_rz.tv",
 | 
			
		||||
	"i32_to_f128_ru.tv",
 | 
			
		||||
	"i32_to_f128_rd.tv",
 | 
			
		||||
	"i32_to_f128_rnm.tv",
 | 
			
		||||
	"f128_to_ui32_rne.tv",
 | 
			
		||||
	"f128_to_ui32_rz.tv",
 | 
			
		||||
	"f128_to_ui32_ru.tv",
 | 
			
		||||
	"f128_to_ui32_rd.tv",
 | 
			
		||||
	"f128_to_ui32_rnm.tv",
 | 
			
		||||
	"f128_to_i32_rne.tv",
 | 
			
		||||
	"f128_to_i32_rz.tv",
 | 
			
		||||
	"f128_to_i32_ru.tv",
 | 
			
		||||
	"f128_to_i32_rd.tv",
 | 
			
		||||
	"f128_to_i32_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
string f32f16cvt[] = '{
 | 
			
		||||
	"f32_to_f16_rne.tv",
 | 
			
		||||
	"f32_to_f16_rz.tv",
 | 
			
		||||
	"f32_to_f16_ru.tv",
 | 
			
		||||
	"f32_to_f16_rd.tv",
 | 
			
		||||
	"f32_to_f16_rnm.tv",
 | 
			
		||||
	"f16_to_f32_rne.tv",
 | 
			
		||||
	"f16_to_f32_rz.tv",
 | 
			
		||||
	"f16_to_f32_ru.tv",
 | 
			
		||||
	"f16_to_f32_rd.tv",
 | 
			
		||||
	"f16_to_f32_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64f16cvt[] = '{
 | 
			
		||||
	"f64_to_f16_rne.tv",
 | 
			
		||||
	"f64_to_f16_rz.tv",
 | 
			
		||||
	"f64_to_f16_ru.tv",
 | 
			
		||||
	"f64_to_f16_rd.tv",
 | 
			
		||||
	"f64_to_f16_rnm.tv",
 | 
			
		||||
	"f16_to_f64_rne.tv",
 | 
			
		||||
	"f16_to_f64_rz.tv",
 | 
			
		||||
	"f16_to_f64_ru.tv",
 | 
			
		||||
	"f16_to_f64_rd.tv",
 | 
			
		||||
	"f16_to_f64_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128f16cvt[] = '{
 | 
			
		||||
	"f128_to_f16_rne.tv",
 | 
			
		||||
	"f128_to_f16_rz.tv",
 | 
			
		||||
	"f128_to_f16_ru.tv",
 | 
			
		||||
	"f128_to_f16_rd.tv",
 | 
			
		||||
	"f128_to_f16_rnm.tv",
 | 
			
		||||
	"f16_to_f128_rne.tv",
 | 
			
		||||
	"f16_to_f128_rz.tv",
 | 
			
		||||
	"f16_to_f128_ru.tv",
 | 
			
		||||
	"f16_to_f128_rd.tv",
 | 
			
		||||
	"f16_to_f128_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64f32cvt[] = '{
 | 
			
		||||
	"f64_to_f32_rne.tv",
 | 
			
		||||
	"f64_to_f32_rz.tv",
 | 
			
		||||
	"f64_to_f32_ru.tv",
 | 
			
		||||
	"f64_to_f32_rd.tv",
 | 
			
		||||
	"f64_to_f32_rnm.tv",
 | 
			
		||||
	"f32_to_f64_rne.tv",
 | 
			
		||||
	"f32_to_f64_rz.tv",
 | 
			
		||||
	"f32_to_f64_ru.tv",
 | 
			
		||||
	"f32_to_f64_rd.tv",
 | 
			
		||||
	"f32_to_f64_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
string f128f32cvt[] = '{
 | 
			
		||||
	"f128_to_f32_rne.tv",
 | 
			
		||||
	"f128_to_f32_rz.tv",
 | 
			
		||||
	"f128_to_f32_ru.tv",
 | 
			
		||||
	"f128_to_f32_rd.tv",
 | 
			
		||||
	"f128_to_f32_rnm.tv",
 | 
			
		||||
	"f32_to_f128_rne.tv",
 | 
			
		||||
	"f32_to_f128_rz.tv",
 | 
			
		||||
	"f32_to_f128_ru.tv",
 | 
			
		||||
	"f32_to_f128_rd.tv",
 | 
			
		||||
	"f32_to_f128_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
string f128f64cvt[] = '{
 | 
			
		||||
	"f64_to_f128_rne.tv",
 | 
			
		||||
	"f64_to_f128_rz.tv",
 | 
			
		||||
	"f64_to_f128_ru.tv",
 | 
			
		||||
	"f64_to_f128_rd.tv",
 | 
			
		||||
	"f64_to_f128_rnm.tv",
 | 
			
		||||
	"f128_to_f64_rne.tv",
 | 
			
		||||
	"f128_to_f64_rz.tv",
 | 
			
		||||
	"f128_to_f64_ru.tv",
 | 
			
		||||
	"f128_to_f64_rd.tv",
 | 
			
		||||
	"f128_to_f64_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16add[] = '{
 | 
			
		||||
	"f16_add_rne.tv",
 | 
			
		||||
	"f16_add_rz.tv",
 | 
			
		||||
	"f16_add_ru.tv",
 | 
			
		||||
	"f16_add_rd.tv",
 | 
			
		||||
	"f16_add_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32add[] = '{
 | 
			
		||||
	"f32_add_rne.tv",
 | 
			
		||||
	"f32_add_rz.tv",
 | 
			
		||||
	"f32_add_ru.tv",
 | 
			
		||||
	"f32_add_rd.tv",
 | 
			
		||||
	"f32_add_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64add[] = '{
 | 
			
		||||
	"f64_add_rne.tv",
 | 
			
		||||
	"f64_add_rz.tv",
 | 
			
		||||
	"f64_add_ru.tv",
 | 
			
		||||
	"f64_add_rd.tv",
 | 
			
		||||
	"f64_add_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128add[] = '{
 | 
			
		||||
	"f128_add_rne.tv",
 | 
			
		||||
	"f128_add_rz.tv",
 | 
			
		||||
	"f128_add_ru.tv",
 | 
			
		||||
	"f128_add_rd.tv",
 | 
			
		||||
	"f128_add_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16sub[] = '{
 | 
			
		||||
	"f16_sub_rne.tv",
 | 
			
		||||
	"f16_sub_rz.tv",
 | 
			
		||||
	"f16_sub_ru.tv",
 | 
			
		||||
	"f16_sub_rd.tv",
 | 
			
		||||
	"f16_sub_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32sub[] = '{
 | 
			
		||||
	"f32_sub_rne.tv",
 | 
			
		||||
	"f32_sub_rz.tv",
 | 
			
		||||
	"f32_sub_ru.tv",
 | 
			
		||||
	"f32_sub_rd.tv",
 | 
			
		||||
	"f32_sub_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64sub[] = '{
 | 
			
		||||
	"f64_sub_rne.tv",
 | 
			
		||||
	"f64_sub_rz.tv",
 | 
			
		||||
	"f64_sub_ru.tv",
 | 
			
		||||
	"f64_sub_rd.tv",
 | 
			
		||||
	"f64_sub_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128sub[] = '{
 | 
			
		||||
	"f128_sub_rne.tv",
 | 
			
		||||
	"f128_sub_rz.tv",
 | 
			
		||||
	"f128_sub_ru.tv",
 | 
			
		||||
	"f128_sub_rd.tv",
 | 
			
		||||
	"f128_sub_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16mul[] = '{
 | 
			
		||||
	"f16_mul_rne.tv",
 | 
			
		||||
	"f16_mul_rz.tv",
 | 
			
		||||
	"f16_mul_ru.tv",
 | 
			
		||||
	"f16_mul_rd.tv",
 | 
			
		||||
	"f16_mul_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32mul[] = '{
 | 
			
		||||
	"f32_mul_rne.tv",
 | 
			
		||||
	"f32_mul_rz.tv",
 | 
			
		||||
	"f32_mul_ru.tv",
 | 
			
		||||
	"f32_mul_rd.tv",
 | 
			
		||||
	"f32_mul_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64mul[] = '{
 | 
			
		||||
	"f64_mul_rne.tv",
 | 
			
		||||
	"f64_mul_rz.tv",
 | 
			
		||||
	"f64_mul_ru.tv",
 | 
			
		||||
	"f64_mul_rd.tv",
 | 
			
		||||
	"f64_mul_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128mul[] = '{
 | 
			
		||||
	"f128_mul_rne.tv",
 | 
			
		||||
	"f128_mul_rz.tv",
 | 
			
		||||
	"f128_mul_ru.tv",
 | 
			
		||||
	"f128_mul_rd.tv",
 | 
			
		||||
	"f128_mul_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16div[] = '{
 | 
			
		||||
	"f16_div_rne.tv",
 | 
			
		||||
	"f16_div_rz.tv",
 | 
			
		||||
	"f16_div_ru.tv",
 | 
			
		||||
	"f16_div_rd.tv",
 | 
			
		||||
	"f16_div_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32div[] = '{
 | 
			
		||||
	"f32_div_rne.tv",
 | 
			
		||||
	"f32_div_rz.tv",
 | 
			
		||||
	"f32_div_ru.tv",
 | 
			
		||||
	"f32_div_rd.tv",
 | 
			
		||||
	"f32_div_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64div[] = '{
 | 
			
		||||
	"f64_div_rne.tv",
 | 
			
		||||
	"f64_div_rz.tv",
 | 
			
		||||
	"f64_div_ru.tv",
 | 
			
		||||
	"f64_div_rd.tv",
 | 
			
		||||
	"f64_div_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128div[] = '{
 | 
			
		||||
	"f128_div_rne.tv",
 | 
			
		||||
	"f128_div_rz.tv",
 | 
			
		||||
	"f128_div_ru.tv",
 | 
			
		||||
	"f128_div_rd.tv",
 | 
			
		||||
	"f128_div_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16sqrt[] = '{
 | 
			
		||||
	"f16_sqrt_rne.tv",
 | 
			
		||||
	"f16_sqrt_rz.tv",
 | 
			
		||||
	"f16_sqrt_ru.tv",
 | 
			
		||||
	"f16_sqrt_rd.tv",
 | 
			
		||||
	"f16_sqrt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32sqrt[] = '{
 | 
			
		||||
	"f32_sqrt_rne.tv",
 | 
			
		||||
	"f32_sqrt_rz.tv",
 | 
			
		||||
	"f32_sqrt_ru.tv",
 | 
			
		||||
	"f32_sqrt_rd.tv",
 | 
			
		||||
	"f32_sqrt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64sqrt[] = '{
 | 
			
		||||
	"f64_sqrt_rne.tv",
 | 
			
		||||
	"f64_sqrt_rz.tv",
 | 
			
		||||
	"f64_sqrt_ru.tv",
 | 
			
		||||
	"f64_sqrt_rd.tv",
 | 
			
		||||
	"f64_sqrt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128sqrt[] = '{
 | 
			
		||||
	"f128_sqrt_rne.tv",
 | 
			
		||||
	"f128_sqrt_rz.tv",
 | 
			
		||||
	"f128_sqrt_ru.tv",
 | 
			
		||||
	"f128_sqrt_rd.tv",
 | 
			
		||||
	"f128_sqrt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16cmp[] = '{
 | 
			
		||||
	"f16_eq_rne.tv",
 | 
			
		||||
	"f16_eq_rz.tv",
 | 
			
		||||
	"f16_eq_ru.tv",
 | 
			
		||||
	"f16_eq_rd.tv",
 | 
			
		||||
	"f16_eq_rnm.tv",
 | 
			
		||||
	"f16_le_rne.tv",
 | 
			
		||||
	"f16_le_rz.tv",
 | 
			
		||||
	"f16_le_ru.tv",
 | 
			
		||||
	"f16_le_rd.tv",
 | 
			
		||||
	"f16_le_rnm.tv",
 | 
			
		||||
	"f16_lt_rne.tv",
 | 
			
		||||
	"f16_lt_rz.tv",
 | 
			
		||||
	"f16_lt_ru.tv",
 | 
			
		||||
	"f16_lt_rd.tv",
 | 
			
		||||
	"f16_lt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32cmp[] = '{
 | 
			
		||||
	"f32_eq_rne.tv",
 | 
			
		||||
	"f32_eq_rz.tv",
 | 
			
		||||
	"f32_eq_ru.tv",
 | 
			
		||||
	"f32_eq_rd.tv",
 | 
			
		||||
	"f32_eq_rnm.tv",
 | 
			
		||||
	"f32_le_rne.tv",
 | 
			
		||||
	"f32_le_rz.tv",
 | 
			
		||||
	"f32_le_ru.tv",
 | 
			
		||||
	"f32_le_rd.tv",
 | 
			
		||||
	"f32_le_rnm.tv",
 | 
			
		||||
	"f32_lt_rne.tv",
 | 
			
		||||
	"f32_lt_rz.tv",
 | 
			
		||||
	"f32_lt_ru.tv",
 | 
			
		||||
	"f32_lt_rd.tv",
 | 
			
		||||
	"f32_lt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64cmp[] = '{
 | 
			
		||||
	"f64_eq_rne.tv",
 | 
			
		||||
	"f64_eq_rz.tv",
 | 
			
		||||
	"f64_eq_ru.tv",
 | 
			
		||||
	"f64_eq_rd.tv",
 | 
			
		||||
	"f64_eq_rnm.tv",
 | 
			
		||||
	"f64_le_rne.tv",
 | 
			
		||||
	"f64_le_rz.tv",
 | 
			
		||||
	"f64_le_ru.tv",
 | 
			
		||||
	"f64_le_rd.tv",
 | 
			
		||||
	"f64_le_rnm.tv",
 | 
			
		||||
	"f64_lt_rne.tv",
 | 
			
		||||
	"f64_lt_rz.tv",
 | 
			
		||||
	"f64_lt_ru.tv",
 | 
			
		||||
	"f64_lt_rd.tv",
 | 
			
		||||
	"f64_lt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128cmp[] = '{
 | 
			
		||||
	"f128_eq_rne.tv",
 | 
			
		||||
	"f128_eq_rz.tv",
 | 
			
		||||
	"f128_eq_ru.tv",
 | 
			
		||||
	"f128_eq_rd.tv",
 | 
			
		||||
	"f128_eq_rnm.tv",
 | 
			
		||||
	"f128_le_rne.tv",
 | 
			
		||||
	"f128_le_rz.tv",
 | 
			
		||||
	"f128_le_ru.tv",
 | 
			
		||||
	"f128_le_rd.tv",
 | 
			
		||||
	"f128_le_rnm.tv",
 | 
			
		||||
	"f128_lt_rne.tv",
 | 
			
		||||
	"f128_lt_rz.tv",
 | 
			
		||||
	"f128_lt_ru.tv",
 | 
			
		||||
	"f128_lt_rd.tv",
 | 
			
		||||
	"f128_lt_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f16fma[] = '{
 | 
			
		||||
	"f16_mulAdd_rne.tv",
 | 
			
		||||
	"f16_mulAdd_rz.tv",
 | 
			
		||||
	"f16_mulAdd_ru.tv",
 | 
			
		||||
	"f16_mulAdd_rd.tv",
 | 
			
		||||
	"f16_mulAdd_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f32fma[] = '{
 | 
			
		||||
	"f32_mulAdd_rne.tv",
 | 
			
		||||
	"f32_mulAdd_rz.tv",
 | 
			
		||||
	"f32_mulAdd_ru.tv",
 | 
			
		||||
	"f32_mulAdd_rd.tv",
 | 
			
		||||
	"f32_mulAdd_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f64fma[] = '{
 | 
			
		||||
	"f64_mulAdd_rne.tv",
 | 
			
		||||
	"f64_mulAdd_rz.tv",
 | 
			
		||||
	"f64_mulAdd_ru.tv",
 | 
			
		||||
	"f64_mulAdd_rd.tv",
 | 
			
		||||
	"f64_mulAdd_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
string f128fma[] = '{
 | 
			
		||||
	"f128_mulAdd_rne.tv",
 | 
			
		||||
	"f128_mulAdd_rz.tv",
 | 
			
		||||
	"f128_mulAdd_ru.tv",
 | 
			
		||||
	"f128_mulAdd_rd.tv",
 | 
			
		||||
	"f128_mulAdd_rnm.tv"
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user