From b93ceef5381b7c84b6887b5299ae81ff48ef45c9 Mon Sep 17 00:00:00 2001 From: Gabe Black Date: Wed, 2 Jun 2010 12:58:16 -0500 Subject: ARM: Get rid of some of the old FP implementation. --- src/arch/arm/isa/formats/fp.isa | 103 ---------------------------------------- 1 file changed, 103 deletions(-) (limited to 'src/arch/arm/isa/formats') diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa index 03e574648..55668e5f6 100644 --- a/src/arch/arm/isa/formats/fp.isa +++ b/src/arch/arm/isa/formats/fp.isa @@ -45,109 +45,6 @@ // Floating Point operate instructions // -def template FPAExecute {{ - Fault %(class_name)s::execute(%(CPU_exec_context)s *xc, Trace::InstRecord *traceData) const - { - Fault fault = NoFault; - - %(fp_enable_check)s; - - %(op_decl)s; - %(op_rd)s; - - if (%(predicate_test)s) { - %(code)s; - if (fault == NoFault) { - %(op_wb)s; - } - } - - return fault; - } -}}; - -def template FloatDoubleDecode {{ - { - ArmStaticInst *i = NULL; - switch (OPCODE_19 << 1 | OPCODE_7) - { - case 0: - i = (ArmStaticInst *)new %(class_name)sS(machInst); - break; - case 1: - i = (ArmStaticInst *)new %(class_name)sD(machInst); - break; - case 2: - case 3: - default: - panic("Cannot decode float/double nature of the instruction"); - } - return i; - } -}}; - -// Primary format for float point operate instructions: -def format FloatOp(code, *flags) {{ - orig_code = code - - cblk = code - iop = InstObjParams(name, Name, 'PredOp', - {"code": cblk, - "predicate_test": predicateTest}, - flags) - header_output = BasicDeclare.subst(iop) - decoder_output = BasicConstructor.subst(iop) - exec_output = FPAExecute.subst(iop) - - sng_cblk = code - sng_iop = InstObjParams(name, Name+'S', 'PredOp', - {"code": sng_cblk, - "predicate_test": predicateTest}, - flags) - header_output += BasicDeclare.subst(sng_iop) - decoder_output += BasicConstructor.subst(sng_iop) - exec_output += FPAExecute.subst(sng_iop) - - dbl_code = re.sub(r'\.sf', '.df', orig_code) - - dbl_cblk = dbl_code - dbl_iop = InstObjParams(name, Name+'D', 'PredOp', - {"code": dbl_cblk, - "predicate_test": predicateTest}, - flags) - header_output += BasicDeclare.subst(dbl_iop) - decoder_output += BasicConstructor.subst(dbl_iop) - exec_output += FPAExecute.subst(dbl_iop) - - decode_block = FloatDoubleDecode.subst(iop) -}}; - -let {{ - calcFPCcCode = ''' - uint16_t _in, _iz, _ic, _iv; - - _in = %(fReg1)s < %(fReg2)s; - _iz = %(fReg1)s == %(fReg2)s; - _ic = %(fReg1)s >= %(fReg2)s; - _iv = (isnan(%(fReg1)s) || isnan(%(fReg2)s)) & 1; - - CondCodes = _in << 31 | _iz << 30 | _ic << 29 | _iv << 28 | - (CondCodes & 0x0FFFFFFF); - ''' -}}; - -def format FloatCmp(fReg1, fReg2, *flags) {{ - code = calcFPCcCode % vars() - iop = InstObjParams(name, Name, 'PredOp', - {"code": code, - "predicate_test": predicateTest}, - flags) - header_output = BasicDeclare.subst(iop) - decoder_output = BasicConstructor.subst(iop) - decode_block = BasicDecode.subst(iop) - exec_output = FPAExecute.subst(iop) -}}; - let {{ header_output = ''' StaticInstPtr -- cgit v1.2.3