Fix exception behavior of fmin/fmax
This commit is contained in:
		@@ -103,10 +103,10 @@ class FPUDecoder extends Module
 | 
				
			|||||||
          FSGNJ_D  -> List(FCMD_SGNJ,   N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
					          FSGNJ_D  -> List(FCMD_SGNJ,   N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
				
			||||||
          FSGNJN_D -> List(FCMD_SGNJ,   N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
					          FSGNJN_D -> List(FCMD_SGNJ,   N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
				
			||||||
          FSGNJX_D -> List(FCMD_SGNJ,   N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
					          FSGNJX_D -> List(FCMD_SGNJ,   N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
				
			||||||
          FMIN_S   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,Y,N,Y,Y,N,N),
 | 
					          FMIN_S   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,Y,N,N,Y,N,N),
 | 
				
			||||||
          FMAX_S   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,Y,N,Y,Y,N,N),
 | 
					          FMAX_S   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,Y,N,N,Y,N,N),
 | 
				
			||||||
          FMIN_D   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,N,N,Y,Y,N,N),
 | 
					          FMIN_D   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
				
			||||||
          FMAX_D   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,N,N,Y,Y,N,N),
 | 
					          FMAX_D   -> List(FCMD_MINMAX, N,Y,Y,Y,N,N,N,N,N,Y,N,N),
 | 
				
			||||||
          FADD_S   -> List(FCMD_ADD,    N,Y,Y,Y,N,Y,Y,N,N,N,Y,Y),
 | 
					          FADD_S   -> List(FCMD_ADD,    N,Y,Y,Y,N,Y,Y,N,N,N,Y,Y),
 | 
				
			||||||
          FSUB_S   -> List(FCMD_SUB,    N,Y,Y,Y,N,Y,Y,N,N,N,Y,Y),
 | 
					          FSUB_S   -> List(FCMD_SUB,    N,Y,Y,Y,N,Y,Y,N,N,N,Y,Y),
 | 
				
			||||||
          FMUL_S   -> List(FCMD_MUL,    N,Y,Y,Y,N,N,Y,N,N,N,Y,Y),
 | 
					          FMUL_S   -> List(FCMD_MUL,    N,Y,Y,Y,N,N,Y,N,N,N,Y,Y),
 | 
				
			||||||
@@ -406,7 +406,7 @@ class FPU(conf: FPUConfig) extends Module
 | 
				
			|||||||
  dfma.io.in.bits := req
 | 
					  dfma.io.in.bits := req
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  val fpiu = Module(new FPToInt)
 | 
					  val fpiu = Module(new FPToInt)
 | 
				
			||||||
  fpiu.io.in.valid := ex_reg_valid && ex_ctrl.toint
 | 
					  fpiu.io.in.valid := ex_reg_valid && (ex_ctrl.toint || ex_ctrl.cmd === FCMD_MINMAX)
 | 
				
			||||||
  fpiu.io.in.bits := req
 | 
					  fpiu.io.in.bits := req
 | 
				
			||||||
  io.dpath.store_data := fpiu.io.out.bits.store
 | 
					  io.dpath.store_data := fpiu.io.out.bits.store
 | 
				
			||||||
  io.dpath.toint_data := fpiu.io.out.bits.toint
 | 
					  io.dpath.toint_data := fpiu.io.out.bits.toint
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user