summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/formats/fp.isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/isa/formats/fp.isa')
-rw-r--r--src/arch/arm/isa/formats/fp.isa19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa
index d509fc28a..03e574648 100644
--- a/src/arch/arm/isa/formats/fp.isa
+++ b/src/arch/arm/isa/formats/fp.isa
@@ -655,8 +655,23 @@ let {{
}
case 0x2:
case 0x3:
- // Between half and single precision.
- return new WarnUnimplemented("vcvtb, vcvtt", machInst);
+ {
+ const bool toHalf = bits(machInst, 16);
+ const bool top = bits(machInst, 7);
+ if (top) {
+ if (toHalf) {
+ return new VcvtFpSFpHT(machInst, vd, vm);
+ } else {
+ return new VcvtFpHTFpS(machInst, vd, vm);
+ }
+ } else {
+ if (toHalf) {
+ return new VcvtFpSFpHB(machInst, vd, vm);
+ } else {
+ return new VcvtFpHBFpS(machInst, vd, vm);
+ }
+ }
+ }
case 0x4:
if (single) {
if (e) {