summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/formats
diff options
context:
space:
mode:
authorEdmund Grimley Evans <Edmund.Grimley-Evans@arm.com>2018-06-28 14:32:01 +0100
committerAndreas Sandberg <andreas.sandberg@arm.com>2018-10-02 14:10:50 +0000
commit352d666fa1e9b5ae960127c95d19cf63c8ff0df7 (patch)
tree60fe09123ff1da0192b53fd36a6623d880b5509c /src/arch/arm/isa/formats
parent9c687a6f70a7b88b8e8c125421c5f5e765b928a5 (diff)
downloadgem5-352d666fa1e9b5ae960127c95d19cf63c8ff0df7.tar.xz
arch-arm: Add FP16 support introduced by Armv8.2-A
This changeset adds support for FP/SIMD instructions with half-precision floating-point operands. Change-Id: I4957f111c9c5e5d6a3747fe9d169d394d642fee8 Signed-off-by: Giacomo Gabrielli <giacomo.gabrielli@arm.com> Reviewed-on: https://gem5-review.googlesource.com/13084 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Diffstat (limited to 'src/arch/arm/isa/formats')
-rw-r--r--src/arch/arm/isa/formats/aarch64.isa6
-rw-r--r--src/arch/arm/isa/formats/fp.isa6
2 files changed, 7 insertions, 5 deletions
diff --git a/src/arch/arm/isa/formats/aarch64.isa b/src/arch/arm/isa/formats/aarch64.isa
index 43dd557aa..77e598c7f 100644
--- a/src/arch/arm/isa/formats/aarch64.isa
+++ b/src/arch/arm/isa/formats/aarch64.isa
@@ -1637,12 +1637,14 @@ namespace Aarch64
if (type == 0) {
// FMOV S[d] = imm8<7>:NOT(imm8<6>):Replicate(imm8<6>,5)
// :imm8<5:0>:Zeros(19)
- uint32_t imm = vfp_modified_imm(imm8, false);
+ uint32_t imm = vfp_modified_imm(imm8,
+ FpDataType::Fp32);
return new FmovImmS(machInst, rd, imm);
} else if (type == 1) {
// FMOV D[d] = imm8<7>:NOT(imm8<6>):Replicate(imm8<6>,8)
// :imm8<5:0>:Zeros(48)
- uint64_t imm = vfp_modified_imm(imm8, true);
+ uint64_t imm = vfp_modified_imm(imm8,
+ FpDataType::Fp64);
return new FmovImmD(machInst, rd, imm);
} else {
return new Unknown64(machInst);
diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa
index 009b27c8f..2412a1f10 100644
--- a/src/arch/arm/isa/formats/fp.isa
+++ b/src/arch/arm/isa/formats/fp.isa
@@ -1,6 +1,6 @@
// -*- mode:c++ -*-
-// Copyright (c) 2010-2011,2016 ARM Limited
+// Copyright (c) 2010-2011, 2016-2018 ARM Limited
// All rights reserved
//
// The license below extends only to copyright in the software and shall
@@ -2401,11 +2401,11 @@ let {{
const uint32_t baseImm =
bits(machInst, 3, 0) | (bits(machInst, 19, 16) << 4);
if (single) {
- uint32_t imm = vfp_modified_imm(baseImm, false);
+ uint32_t imm = vfp_modified_imm(baseImm, FpDataType::Fp32);
return decodeVfpRegImmOp<VmovImmS>(
machInst, vd, imm, false);
} else {
- uint64_t imm = vfp_modified_imm(baseImm, true);
+ uint64_t imm = vfp_modified_imm(baseImm, FpDataType::Fp64);
return decodeVfpRegImmOp<VmovImmD>(
machInst, vd, imm, true);
}