A64: Enable FCVT floating-point conversions for half-precision
With this, we no longer have to fall back to the interpreter in any of the FCVT floating-point conversion instructions.
This commit is contained in:
parent
e4c259d69f
commit
16de99d3e3
1 changed files with 8 additions and 4 deletions
|
@ -112,15 +112,18 @@ bool TranslatorVisitor::FCVT_float(Imm<2> type, Imm<2> opc, Vec Vn, Vec Vd) {
|
|||
case 16:
|
||||
switch (*dstsize) {
|
||||
case 32:
|
||||
return InterpretThisInstruction();
|
||||
result = ir.FPHalfToSingle(operand, rounding_mode);
|
||||
break;
|
||||
case 64:
|
||||
return InterpretThisInstruction();
|
||||
result = ir.FPHalfToDouble(operand, rounding_mode);
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case 32:
|
||||
switch (*dstsize) {
|
||||
case 16:
|
||||
return InterpretThisInstruction();
|
||||
result = ir.FPSingleToHalf(operand, rounding_mode);
|
||||
break;
|
||||
case 64:
|
||||
result = ir.FPSingleToDouble(operand, rounding_mode);
|
||||
break;
|
||||
|
@ -129,7 +132,8 @@ bool TranslatorVisitor::FCVT_float(Imm<2> type, Imm<2> opc, Vec Vn, Vec Vd) {
|
|||
case 64:
|
||||
switch (*dstsize) {
|
||||
case 16:
|
||||
return InterpretThisInstruction();
|
||||
result = ir.FPDoubleToHalf(operand, rounding_mode);
|
||||
break;
|
||||
case 32:
|
||||
result = ir.FPDoubleToSingle(operand, rounding_mode);
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue