Index: runtime/vm/constants_dbc.h |
diff --git a/runtime/vm/constants_dbc.h b/runtime/vm/constants_dbc.h |
index 4d9c29ab2962e88bd2f3f5d8dedaa09ab8ab0738..44398aaa22d704c49b29cc7f5ae4c06a2ef6f07a 100644 |
--- a/runtime/vm/constants_dbc.h |
+++ b/runtime/vm/constants_dbc.h |
@@ -220,6 +220,16 @@ namespace dart { |
// |
// FP[rA] <- op(FP[rD]). Assumes FP[rD] is an unboxed double. |
// |
+// - DTruncate, DFloor, DCeil rA, rD |
+// |
+// Applies trunc(), floor(), or ceil() to the unboxed double in FP[rD], and |
+// stores the result in FP[rA]. |
+// |
+// - DoubleToFloat, FloatToDouble rA, rD |
+// |
+// Convert the unboxed float or double in FP[rD] as indicated, and store the |
+// result in FP[rA]. |
+// |
// - BitOr, BitAnd, BitXor rA, rB, rC |
// |
// FP[rA] <- FP[rB] op FP[rC]. These instructions expect their operands to be |
@@ -348,9 +358,11 @@ namespace dart { |
// Store FP[rC] into array FP[rA] at index FP[rB]. No typechecking is done. |
// FP[rA] is assumed to be a RawArray, FP[rB] to be a smi. |
// |
-// - StoreIndexed{N}{Float64, Uint8, OneByteString} rA, rB, rC |
+// - StoreIndexed{N}{Type} rA, rB, rC |
// |
-// Where N is '' or '8'. N may only be '8' for Float64. |
+// Where Type is Float32, Float64, Uint8, or OneByteString |
+// Where N is '', '4', or '8'. N may only be '4' for Float32 and '8' for |
+// Float64. |
// |
// Store the unboxed double or tagged Smi in FP[rC] into the typed data array |
// at FP[rA] at index FP[rB]. If N is not '', the index is assumed to be |
@@ -367,8 +379,9 @@ namespace dart { |
// |
// - LoadIndexed{N}{Type} rA, rB, rC |
// |
-// Where Type is Float64, OneByteString, TwoByteString, Uint8, or Int8, |
-// and N is '' or '8'. N may only be '8' for Float64. |
+// Where Type is Float32, Float64, OneByteString, TwoByteString, Uint8, |
+// Int8, and N is '', '4', or '8'. N may only be '4' for Float32, and may |
+// only be '8' for Float64. |
// |
// Loads from typed data array FP[rB] at index FP[rC] into an unboxed double, |
// or tagged Smi in FP[rA] as indicated by the type in the name. If N is not |
@@ -683,6 +696,11 @@ namespace dart { |
V(DSin, A_D, reg, reg, ___) \ |
V(DPow, A_B_C, reg, reg, reg) \ |
V(DMod, A_B_C, reg, reg, reg) \ |
+ V(DTruncate, A_D, reg, reg, ___) \ |
+ V(DFloor, A_D, reg, reg, ___) \ |
+ V(DCeil, A_D, reg, reg, ___) \ |
+ V(DoubleToFloat, A_D, reg, reg, ___) \ |
+ V(FloatToDouble, A_D, reg, reg, ___) \ |
V(StoreStaticTOS, D, lit, ___, ___) \ |
V(PushStatic, D, lit, ___, ___) \ |
V(InitStaticTOS, 0, ___, ___, ___) \ |
@@ -722,6 +740,8 @@ namespace dart { |
V(StoreIndexedExternalUint8, A_B_C, reg, reg, reg) \ |
V(StoreIndexedOneByteString, A_B_C, reg, reg, reg) \ |
V(StoreIndexedUint32, A_B_C, reg, reg, reg) \ |
+ V(StoreIndexedFloat32, A_B_C, reg, reg, reg) \ |
+ V(StoreIndexed4Float32, A_B_C, reg, reg, reg) \ |
V(StoreIndexedFloat64, A_B_C, reg, reg, reg) \ |
V(StoreIndexed8Float64, A_B_C, reg, reg, reg) \ |
V(LoadIndexed, A_B_C, reg, reg, reg) \ |
@@ -731,6 +751,8 @@ namespace dart { |
V(LoadIndexedUint32, A_B_C, reg, reg, reg) \ |
V(LoadIndexedExternalUint8, A_B_C, reg, reg, reg) \ |
V(LoadIndexedExternalInt8, A_B_C, reg, reg, reg) \ |
+ V(LoadIndexedFloat32, A_B_C, reg, reg, reg) \ |
+ V(LoadIndexed4Float32, A_B_C, reg, reg, reg) \ |
V(LoadIndexedFloat64, A_B_C, reg, reg, reg) \ |
V(LoadIndexed8Float64, A_B_C, reg, reg, reg) \ |
V(LoadIndexedOneByteString, A_B_C, reg, reg, reg) \ |