diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:07 -0500 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2010-06-02 12:58:07 -0500 |
commit | 00baeb742d8ff3f735466131253bf457664ecc6b (patch) | |
tree | 802d60b395cd242710ddd683ac9f7809e6e63bd8 /src/arch/arm | |
parent | 8f566e5ee3d9e3236cced1d56c11d7f3ea4ab351 (diff) | |
download | gem5-00baeb742d8ff3f735466131253bf457664ecc6b.tar.xz |
ARM: Decode the usad8 and usada8 instructions.
Diffstat (limited to 'src/arch/arm')
-rw-r--r-- | src/arch/arm/isa/decoder/arm.isa | 5 | ||||
-rw-r--r-- | src/arch/arm/isa/formats/data.isa | 16 | ||||
-rw-r--r-- | src/arch/arm/isa/formats/mult.isa | 4 |
3 files changed, 19 insertions, 6 deletions
diff --git a/src/arch/arm/isa/decoder/arm.isa b/src/arch/arm/isa/decoder/arm.isa index be3a8787a..fe8e1ed2e 100644 --- a/src/arch/arm/isa/decoder/arm.isa +++ b/src/arch/arm/isa/decoder/arm.isa @@ -120,10 +120,7 @@ format DataOp { 0x1: ArmPackUnpackSatReverse::armPackUnpackSatReverse(); 0x2: ArmSignedMultiplies::armSignedMultiplies(); 0x3: decode MEDIA_OPCODE { - 0x18: decode RN { - 0xf: WarnUnimpl::usada8(); - default: WarnUnimpl::usad8(); - } + 0x18: ArmUsad::armUsad(); } } } diff --git a/src/arch/arm/isa/formats/data.isa b/src/arch/arm/isa/formats/data.isa index 2efd9c18f..7679aa355 100644 --- a/src/arch/arm/isa/formats/data.isa +++ b/src/arch/arm/isa/formats/data.isa @@ -35,6 +35,22 @@ // // Authors: Gabe Black +def format ArmUsad() {{ + decode_block = ''' + { + const IntRegIndex rd = (IntRegIndex)(uint32_t)bits(machInst, 19, 16); + const IntRegIndex rn = (IntRegIndex)(uint32_t)bits(machInst, 3, 0); + const IntRegIndex rm = (IntRegIndex)(uint32_t)bits(machInst, 11, 8); + const IntRegIndex ra = (IntRegIndex)(uint32_t)bits(machInst, 15, 12); + if (ra == 0xf) { + return new Usad8(machInst, rd, rn, rm); + } else { + return new Usada8(machInst, rd, rn, rm, ra); + } + } + ''' +}}; + def format ArmDataProcReg() {{ pclr = ''' return new %(className)ssRegPclr(machInst, %(dest)s, diff --git a/src/arch/arm/isa/formats/mult.isa b/src/arch/arm/isa/formats/mult.isa index 653abefdb..bd101374a 100644 --- a/src/arch/arm/isa/formats/mult.isa +++ b/src/arch/arm/isa/formats/mult.isa @@ -267,9 +267,9 @@ def format Thumb32MulMulAccAndAbsDiff() {{ if (op2 != 0x0) { return new Unknown(machInst); } else if (ra == 0xf) { - return new WarnUnimplemented("usada8", machInst); + return new Usad8(machInst, rd, rn, rm); } else { - return new WarnUnimplemented("usad8", machInst); + return new Usada8(machInst, rd, rn, rm, ra); } } } |