#ifndef wasm_optimizer_h
#define wasm_optimizer_h
#include "simple_ast.h"
using IString = wasm::IString;
extern IString JS_FLOAT_ZERO;
extern IString SIMD_INT8X16_CHECK;
extern IString SIMD_INT16X8_CHECK;
extern IString SIMD_INT32X4_CHECK;
extern IString SIMD_FLOAT32X4_CHECK;
extern IString SIMD_FLOAT64X2_CHECK;
enum JsType {
JS_INT = 0,
JS_DOUBLE,
JS_FLOAT,
JS_FLOAT32X4,
JS_FLOAT64X2,
JS_INT8X16,
JS_INT16X8,
JS_INT32X4,
JS_INT64,
JS_NONE };
enum JsSign {
JS_FLEXIBLE = 0,
JS_SIGNED,
JS_UNSIGNED,
JS_NONSIGNED,
};
cashew::Ref makeJsCoercedZero(JsType type);
cashew::Ref makeJsCoercion(cashew::Ref node, JsType type);
cashew::Ref makeSigning(cashew::Ref node, JsSign sign);
#endif