cpu, arm: Distinguish Float* and SimdFloat*, create FloatMem* opClass
Modify the opClass assigned to AArch64 FP instructions from SimdFloat* to Float*. Also create the FloatMemRead and FloatMemWrite opClasses, which distinguishes writes to the INT and FP register banks. Change the latency of (Simd)FloatMultAcc to 5, based on the Cortex-A72, where the "latency" of FMADD is 3 if the next instruction is a FMADD and has only the augend to destination dependency, otherwise it's 7 cycles. Signed-off-by: Jason Lowe-Power <jason@lowepower.com>
This commit is contained in:
@@ -59,7 +59,9 @@ static const OpClass FloatAddOp = Enums::FloatAdd;
|
||||
static const OpClass FloatCmpOp = Enums::FloatCmp;
|
||||
static const OpClass FloatCvtOp = Enums::FloatCvt;
|
||||
static const OpClass FloatMultOp = Enums::FloatMult;
|
||||
static const OpClass FloatMultAccOp = Enums::FloatMultAcc;
|
||||
static const OpClass FloatDivOp = Enums::FloatDiv;
|
||||
static const OpClass FloatMiscOp = Enums::FloatMisc;
|
||||
static const OpClass FloatSqrtOp = Enums::FloatSqrt;
|
||||
static const OpClass SimdAddOp = Enums::SimdAdd;
|
||||
static const OpClass SimdAddAccOp = Enums::SimdAddAcc;
|
||||
@@ -83,6 +85,8 @@ static const OpClass SimdFloatMultAccOp = Enums::SimdFloatMultAcc;
|
||||
static const OpClass SimdFloatSqrtOp = Enums::SimdFloatSqrt;
|
||||
static const OpClass MemReadOp = Enums::MemRead;
|
||||
static const OpClass MemWriteOp = Enums::MemWrite;
|
||||
static const OpClass FloatMemReadOp = Enums::FloatMemRead;
|
||||
static const OpClass FloatMemWriteOp = Enums::FloatMemWrite;
|
||||
static const OpClass IprAccessOp = Enums::IprAccess;
|
||||
static const OpClass InstPrefetchOp = Enums::InstPrefetch;
|
||||
static const OpClass Num_OpClasses = Enums::Num_OpClass;
|
||||
|
||||
Reference in New Issue
Block a user