summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/arch/power/isa/decoder.isa33
-rw-r--r--src/arch/power/isa/operands.isa4
2 files changed, 21 insertions, 16 deletions
diff --git a/src/arch/power/isa/decoder.isa b/src/arch/power/isa/decoder.isa
index 6bc19adb9..d2365bd5b 100644
--- a/src/arch/power/isa/decoder.isa
+++ b/src/arch/power/isa/decoder.isa
@@ -88,11 +88,16 @@ decode OPCODE default Unknown::unknown() {
// Arithmetic instructions all use source registers Ra and Rb,
// with destination register Rt.
format IntArithOp {
- 75: mulhw({{ int64_t prod = Ra_sq * Rb_sq; Rt = prod >> 32; }});
- 11: mulhwu({{ uint64_t prod = Ra_uq * Rb_uq; Rt = prod >> 32; }});
- 235: mullw({{ int64_t prod = Ra_sq * Rb_sq; Rt = prod; }});
- 747: mullwo({{ int64_t src1 = Ra_sq; int64_t src2 = Rb; int64_t prod = src1 * src2; Rt = prod; }},
- true);
+ 75: mulhw({{ int64_t prod = Ra_sd * Rb_sd; Rt = prod >> 32; }});
+ 11: mulhwu({{ uint64_t prod = Ra_ud * Rb_ud; Rt = prod >> 32; }});
+ 235: mullw({{ int64_t prod = Ra_sd * Rb_sd; Rt = prod; }});
+ 747: mullwo({{
+ int64_t src1 = Ra_sd;
+ int64_t src2 = Rb;
+ int64_t prod = src1 * src2;
+ Rt = prod;
+ }},
+ true);
491: divw({{
int32_t src1 = Ra_sw;
@@ -559,29 +564,29 @@ decode OPCODE default Unknown::unknown() {
format FloatRCCheckOp {
72: fmr({{ Ft = Fb; }});
264: fabs({{
- Ft_uq = Fb_uq;
- Ft_uq = insertBits(Ft_uq, 63, 0); }});
+ Ft_ud = Fb_ud;
+ Ft_ud = insertBits(Ft_ud, 63, 0); }});
136: fnabs({{
- Ft_uq = Fb_uq;
- Ft_uq = insertBits(Ft_uq, 63, 1); }});
+ Ft_ud = Fb_ud;
+ Ft_ud = insertBits(Ft_ud, 63, 1); }});
40: fneg({{ Ft = -Fb; }});
8: fcpsgn({{
- Ft_uq = Fb_uq;
- Ft_uq = insertBits(Ft_uq, 63, Fa_uq<63:63>);
+ Ft_ud = Fb_ud;
+ Ft_ud = insertBits(Ft_ud, 63, Fa_ud<63:63>);
}});
- 583: mffs({{ Ft_uq = FPSCR; }});
+ 583: mffs({{ Ft_ud = FPSCR; }});
134: mtfsfi({{
FPSCR = insertCRField(FPSCR, BF + (8 * (1 - W_FIELD)),
U_FIELD);
}});
711: mtfsf({{
- if (L_FIELD == 1) { FPSCR = Fb_uq; }
+ if (L_FIELD == 1) { FPSCR = Fb_ud; }
else {
for (int i = 0; i < 8; ++i) {
if (bits(FLM, i) == 1) {
int k = 4 * (i + (8 * (1 - W_FIELD)));
FPSCR = insertBits(FPSCR, k + 3, k,
- bits(Fb_uq, k + 3, k));
+ bits(Fb_ud, k + 3, k));
}
}
}
diff --git a/src/arch/power/isa/operands.isa b/src/arch/power/isa/operands.isa
index fa481825f..98b91dc8a 100644
--- a/src/arch/power/isa/operands.isa
+++ b/src/arch/power/isa/operands.isa
@@ -35,8 +35,8 @@ def operand_types {{
'uh' : 'uint16_t',
'sw' : 'int32_t',
'uw' : 'uint32_t',
- 'sq' : 'int64_t',
- 'uq' : 'uint64_t',
+ 'sd' : 'int64_t',
+ 'ud' : 'uint64_t',
'sf' : 'float',
'df' : 'double'
}};