summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/operands.isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/isa/operands.isa')
-rw-r--r--src/arch/arm/isa/operands.isa27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/arch/arm/isa/operands.isa b/src/arch/arm/isa/operands.isa
index 025f75755..fb3e4de35 100644
--- a/src/arch/arm/isa/operands.isa
+++ b/src/arch/arm/isa/operands.isa
@@ -46,6 +46,7 @@ def operand_types {{
'uh' : 'uint16_t',
'sw' : 'int32_t',
'uw' : 'uint32_t',
+ 'sd' : 'int64_t',
'ud' : 'uint64_t',
'tud' : 'std::array<uint64_t, 2>',
'sf' : 'float',
@@ -53,6 +54,10 @@ def operand_types {{
'vc' : 'TheISA::VecRegContainer',
# For operations that are implemented as a template
'x' : 'TPElem',
+ 'xs' : 'TPSElem',
+ 'xd' : 'TPDElem',
+ 'pc' : 'TheISA::VecPredRegContainer',
+ 'pb' : 'uint8_t'
}};
let {{
@@ -129,6 +134,9 @@ let {{
def vectorRegElem(elem, ext = 'sf', zeroing = False):
return (elem, ext, zeroing)
+ def vecPredReg(idx):
+ return ('VecPredReg', 'pc', idx, None, srtNormal)
+
def intReg(idx):
return ('IntReg', 'uw', idx, 'IsInteger', srtNormal,
maybePCRead, maybePCWrite)
@@ -522,6 +530,25 @@ def operands {{
'AA64FpDestQV1L': vectorRegElem('0', 'tud', zeroing = True)
}),
+ 'AA64FpDestMerge': vectorReg('dest',
+ {
+ 'AA64FpDestMergeP0': vectorRegElem('0'),
+ 'AA64FpDestMergeP1': vectorRegElem('1'),
+ 'AA64FpDestMergeP2': vectorRegElem('2'),
+ 'AA64FpDestMergeP3': vectorRegElem('3'),
+ 'AA64FpDestMergeS': vectorRegElem('0', 'sf', zeroing = True),
+ 'AA64FpDestMergeD': vectorRegElem('0', 'df', zeroing = True),
+ 'AA64FpDestMergeQ': vectorRegElem('0', 'tud', zeroing = True)
+ }),
+
+ # Predicate register operands
+ 'GpOp': vecPredReg('gp'),
+ 'POp1': vecPredReg('op1'),
+ 'POp2': vecPredReg('op2'),
+ 'PDest': vecPredReg('dest'),
+ 'PDestMerge': vecPredReg('dest'),
+ 'Ffr': vecPredReg('PREDREG_FFR'),
+
#Abstracted control reg operands
'MiscDest': cntrlReg('dest'),
'MiscOp1': cntrlReg('op1'),