mirror of
https://github.com/i-net-software/JWebAssembly.git
synced 2025-03-15 02:44:47 +01:00
implements abs instruction
This commit is contained in:
parent
eed21966d4
commit
03ed725262
@ -973,6 +973,17 @@ public class BinaryModuleWriter extends ModuleWriter implements InstructionOpcod
|
||||
default:
|
||||
}
|
||||
break;
|
||||
case abs:
|
||||
switch( valueType ) {
|
||||
case f32:
|
||||
op = F32_ABS;
|
||||
break;
|
||||
case f64:
|
||||
op = F64_ABS;
|
||||
break;
|
||||
default:
|
||||
}
|
||||
break;
|
||||
case ceil:
|
||||
switch( valueType ) {
|
||||
case f32:
|
||||
|
@ -95,6 +95,7 @@ class WasmNumericInstruction extends WasmInstruction {
|
||||
switch( numOp ) {
|
||||
case neg:
|
||||
case sqrt:
|
||||
case abs:
|
||||
case ceil:
|
||||
case floor:
|
||||
case trunc:
|
||||
|
@ -44,6 +44,7 @@ public enum NumericOperator {
|
||||
ref_eq,
|
||||
ref_ne,
|
||||
sqrt,
|
||||
abs,
|
||||
ceil,
|
||||
floor,
|
||||
trunc,
|
||||
|
@ -84,6 +84,9 @@ public class WatParser extends WasmCodeBuilder {
|
||||
case "i64.trunc_sat_f64_s":
|
||||
addConvertInstruction( ValueTypeConvertion.d2l, javaCodePos, lineNumber );
|
||||
break;
|
||||
case "f32.abs":
|
||||
addNumericInstruction( NumericOperator.abs, ValueType.f32, javaCodePos, lineNumber );
|
||||
break;
|
||||
case "f32.ceil":
|
||||
addNumericInstruction( NumericOperator.ceil, ValueType.f32, javaCodePos, lineNumber );
|
||||
break;
|
||||
@ -117,6 +120,9 @@ public class WatParser extends WasmCodeBuilder {
|
||||
case "f32.trunc":
|
||||
addNumericInstruction( NumericOperator.trunc, ValueType.f32, javaCodePos, lineNumber );
|
||||
break;
|
||||
case "f64.abs":
|
||||
addNumericInstruction( NumericOperator.abs, ValueType.f64, javaCodePos, lineNumber );
|
||||
break;
|
||||
case "f64.ceil":
|
||||
addNumericInstruction( NumericOperator.ceil, ValueType.f64, javaCodePos, lineNumber );
|
||||
break;
|
||||
|
@ -69,6 +69,9 @@ public class MathAPI extends AbstractBaseTest {
|
||||
addParam( list, script, "roundF_3_5" );
|
||||
addParam( list, script, "roundD3_8" );
|
||||
addParam( list, script, "roundD_3_8" );
|
||||
addParam( list, script, "random" );
|
||||
addParam( list, script, "absF" );
|
||||
addParam( list, script, "absD" );
|
||||
}
|
||||
rule.setTestParameters( list );
|
||||
return list;
|
||||
@ -217,5 +220,28 @@ public class MathAPI extends AbstractBaseTest {
|
||||
// SpiderMonkey does not support BigInt currently
|
||||
return (int)Math.round( -3.8 );
|
||||
}
|
||||
|
||||
@Export
|
||||
static int random() {
|
||||
if( Math.random() < 0 ) {
|
||||
return 1;
|
||||
} else if( Math.random() > 1 ) {
|
||||
return 2;
|
||||
} else if( Math.random() == Math.random() ) {
|
||||
return 3;
|
||||
} else {
|
||||
return 4;
|
||||
}
|
||||
}
|
||||
|
||||
@Export
|
||||
static float absF() {
|
||||
return Math.abs( -3.8F );
|
||||
}
|
||||
|
||||
@Export
|
||||
static double absD() {
|
||||
return Math.abs( -3.8 );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user