From: Gabe Black Date: Wed, 2 Jun 2010 17:58:07 +0000 (-0500) Subject: ARM: Decode the 8/16 bit signed/unsigned add/subtract half instructions. X-Git-Tag: stable_2012_02_02~1262 X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a1208aa66d04994d3b1d8b2dc703dbb95fe0c98c;p=gem5.git ARM: Decode the 8/16 bit signed/unsigned add/subtract half instructions. --- diff --git a/src/arch/arm/isa/formats/data.isa b/src/arch/arm/isa/formats/data.isa index 627c17ca0..296bf23c5 100644 --- a/src/arch/arm/isa/formats/data.isa +++ b/src/arch/arm/isa/formats/data.isa @@ -284,17 +284,17 @@ def format ArmParallelAddSubtract() {{ case 0x3: switch (op2) { case 0x0: - return new WarnUnimplemented("shadd16", machInst); + return new Shadd16Reg(machInst, rd, rn, rm, 0, LSL); case 0x1: - return new WarnUnimplemented("shasx", machInst); + return new ShasxReg(machInst, rd, rn, rm, 0, LSL); case 0x2: - return new WarnUnimplemented("shsax", machInst); + return new ShsaxReg(machInst, rd, rn, rm, 0, LSL); case 0x3: - return new WarnUnimplemented("shsub16", machInst); + return new Shsub16Reg(machInst, rd, rn, rm, 0, LSL); case 0x4: - return new WarnUnimplemented("shadd8", machInst); + return new Shadd8Reg(machInst, rd, rn, rm, 0, LSL); case 0x7: - return new WarnUnimplemented("shsub8", machInst); + return new Shsub8Reg(machInst, rd, rn, rm, 0, LSL); } break; } @@ -335,17 +335,17 @@ def format ArmParallelAddSubtract() {{ case 0x3: switch (op2) { case 0x0: - return new WarnUnimplemented("uhadd16", machInst); + return new Uhadd16Reg(machInst, rd, rn, rm, 0, LSL); case 0x1: - return new WarnUnimplemented("uhasx", machInst); + return new UhasxReg(machInst, rd, rn, rm, 0, LSL); case 0x2: - return new WarnUnimplemented("uhsax", machInst); + return new UhsaxReg(machInst, rd, rn, rm, 0, LSL); case 0x3: - return new WarnUnimplemented("uhsub16", machInst); + return new Uhsub16Reg(machInst, rd, rn, rm, 0, LSL); case 0x4: - return new WarnUnimplemented("uhadd8", machInst); + return new Uhadd8Reg(machInst, rd, rn, rm, 0, LSL); case 0x7: - return new WarnUnimplemented("uhsub8", machInst); + return new Uhsub8Reg(machInst, rd, rn, rm, 0, LSL); } break; } @@ -606,17 +606,17 @@ def format Thumb32DataProcReg() {{ case 0x2: switch (op1) { case 0x1: - return new WarnUnimplemented("shadd16", machInst); + return new Shadd16Reg(machInst, rd, rn, rm, 0, LSL); case 0x2: - return new WarnUnimplemented("shasx", machInst); + return new ShasxReg(machInst, rd, rn, rm, 0, LSL); case 0x6: - return new WarnUnimplemented("shsax", machInst); + return new ShsaxReg(machInst, rd, rn, rm, 0, LSL); case 0x5: - return new WarnUnimplemented("shsub16", machInst); + return new Shsub16Reg(machInst, rd, rn, rm, 0, LSL); case 0x0: - return new WarnUnimplemented("shadd8", machInst); + return new Shadd8Reg(machInst, rd, rn, rm, 0, LSL); case 0x4: - return new WarnUnimplemented("shsub8", machInst); + return new Shsub8Reg(machInst, rd, rn, rm, 0, LSL); } break; } @@ -665,17 +665,17 @@ def format Thumb32DataProcReg() {{ case 0x2: switch (op1) { case 0x1: - return new WarnUnimplemented("uhadd16", machInst); + return new Uhadd16Reg(machInst, rd, rn, rm, 0, LSL); case 0x2: - return new WarnUnimplemented("uhasx", machInst); + return new UhasxReg(machInst, rd, rn, rm, 0, LSL); case 0x6: - return new WarnUnimplemented("uhsax", machInst); + return new UhsaxReg(machInst, rd, rn, rm, 0, LSL); case 0x5: - return new WarnUnimplemented("uhsub16", machInst); + return new Uhsub16Reg(machInst, rd, rn, rm, 0, LSL); case 0x0: - return new WarnUnimplemented("uhadd8", machInst); + return new Uhadd8Reg(machInst, rd, rn, rm, 0, LSL); case 0x4: - return new WarnUnimplemented("uhsub8", machInst); + return new Uhsub8Reg(machInst, rd, rn, rm, 0, LSL); } break; }