@@ -27,42 +27,14 @@ Status UnaryOpBuilder::AddToModelBuilderImpl(ModelBuilder& model_builder, const
2727 const auto & op_type (node.OpType ());
2828
2929 emscripten::val input = model_builder.GetOperand (node.InputDefs ()[0 ]->Name ());
30- emscripten::val output = emscripten::val::object ();
3130 emscripten::val options = emscripten::val::object ();
3231 options.set (" label" , node.Name ());
3332
34- if (op_type == " Abs" ) {
35- output = model_builder.GetBuilder ().call <emscripten::val>(" abs" , input, options);
36- } else if (op_type == " Ceil" ) {
37- output = model_builder.GetBuilder ().call <emscripten::val>(" ceil" , input, options);
38- } else if (op_type == " Cos" ) {
39- output = model_builder.GetBuilder ().call <emscripten::val>(" cos" , input, options);
40- } else if (op_type == " Erf" ) {
41- output = model_builder.GetBuilder ().call <emscripten::val>(" erf" , input, options);
42- } else if (op_type == " Exp" ) {
43- output = model_builder.GetBuilder ().call <emscripten::val>(" exp" , input, options);
44- } else if (op_type == " Floor" ) {
45- output = model_builder.GetBuilder ().call <emscripten::val>(" floor" , input, options);
46- } else if (op_type == " Identity" ) {
47- output = model_builder.GetBuilder ().call <emscripten::val>(" identity" , input, options);
48- } else if (op_type == " Log" ) {
49- output = model_builder.GetBuilder ().call <emscripten::val>(" log" , input, options);
50- } else if (op_type == " Neg" ) {
51- output = model_builder.GetBuilder ().call <emscripten::val>(" neg" , input, options);
52- } else if (op_type == " Reciprocal" ) {
53- output = model_builder.GetBuilder ().call <emscripten::val>(" reciprocal" , input, options);
54- } else if (op_type == " Sign" ) {
55- output = model_builder.GetBuilder ().call <emscripten::val>(" sign" , input, options);
56- } else if (op_type == " Sin" ) {
57- output = model_builder.GetBuilder ().call <emscripten::val>(" sin" , input, options);
58- } else if (op_type == " Sqrt" ) {
59- output = model_builder.GetBuilder ().call <emscripten::val>(" sqrt" , input, options);
60- } else if (op_type == " Tan" ) {
61- output = model_builder.GetBuilder ().call <emscripten::val>(" tan" , input, options);
62- } else {
63- return ORT_MAKE_STATUS (ONNXRUNTIME, INVALID_ARGUMENT,
64- " UnaryOpBuilder::AddToModelBuilderImpl, unknown op: " , op_type);
65- }
33+ const std::string_view webnn_op_type = GetWebNNOpType (op_type);
34+ ORT_RETURN_IF (webnn_op_type.empty (), " Cannot get WebNN op type" );
35+
36+ emscripten::val output = model_builder.GetBuilder ().call <emscripten::val>(
37+ std::string (webnn_op_type).c_str (), input, options);
6638
6739 model_builder.AddOperand (node.OutputDefs ()[0 ]->Name (), std::move (output));
6840 return Status::OK ();
@@ -84,6 +56,7 @@ void CreateUnaryOpBuilder(const std::string& op_type, OpBuilderRegistrations& op
8456 " Log" ,
8557 " Neg" ,
8658 " Reciprocal" ,
59+ " Round" ,
8760 " Sign" ,
8861 " Sin" ,
8962 " Sqrt" ,
0 commit comments