diff options
Diffstat (limited to 'src/arch/arm/isa/formats')
-rw-r--r-- | src/arch/arm/isa/formats/fp.isa | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/src/arch/arm/isa/formats/fp.isa b/src/arch/arm/isa/formats/fp.isa index 1bb6bc89d..e730833db 100644 --- a/src/arch/arm/isa/formats/fp.isa +++ b/src/arch/arm/isa/formats/fp.isa @@ -742,7 +742,23 @@ let {{ case 0xf: if (o1) { if (u) { - return new Unknown(machInst); + if (bits(size, 1) == 0) { + if (q) { + return new VmaxnmQFp<uint32_t>( + machInst, vd, vn, vm); + } else { + return new VmaxnmDFp<uint32_t>( + machInst, vd, vn, vm); + } + } else { + if (q) { + return new VminnmQFp<uint32_t>( + machInst, vd, vn, vm); + } else { + return new VminnmDFp<uint32_t>( + machInst, vd, vn, vm); + } + } } else { if (bits(size, 1) == 0) { if (q) { @@ -762,29 +778,37 @@ let {{ if (u) { if (bits(size, 1) == 0) { if (q) { - return new VpmaxQFp<float>(machInst, vd, vn, vm); + return new VpmaxQFp<uint32_t>( + machInst, vd, vn, vm); } else { - return new VpmaxDFp<float>(machInst, vd, vn, vm); + return new VpmaxDFp<uint32_t>( + machInst, vd, vn, vm); } } else { if (q) { - return new VpminQFp<float>(machInst, vd, vn, vm); + return new VpminQFp<uint32_t>( + machInst, vd, vn, vm); } else { - return new VpminDFp<float>(machInst, vd, vn, vm); + return new VpminDFp<uint32_t>( + machInst, vd, vn, vm); } } } else { if (bits(size, 1) == 0) { if (q) { - return new VmaxQFp<float>(machInst, vd, vn, vm); + return new VmaxQFp<uint32_t>( + machInst, vd, vn, vm); } else { - return new VmaxDFp<float>(machInst, vd, vn, vm); + return new VmaxDFp<uint32_t>( + machInst, vd, vn, vm); } } else { if (q) { - return new VminQFp<float>(machInst, vd, vn, vm); + return new VminQFp<uint32_t>( + machInst, vd, vn, vm); } else { - return new VminDFp<float>(machInst, vd, vn, vm); + return new VminDFp<uint32_t>( + machInst, vd, vn, vm); } } } |