From 2550e12f3485a07e37e0de3d14b1e22df01802bf Mon Sep 17 00:00:00 2001 From: menglcai Date: Tue, 6 Jan 2026 17:04:34 +0800 Subject: [PATCH] update --- src/op/builder/clip.cpp | 39 +++++++++++++++++++++++++++++++-------- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/src/op/builder/clip.cpp b/src/op/builder/clip.cpp index b3b781775aa..070b6a9b991 100644 --- a/src/op/builder/clip.cpp +++ b/src/op/builder/clip.cpp @@ -1,6 +1,6 @@ /* The MIT License (MIT) * - * Copyright (c) 2015-2025 Advanced Micro Devices, Inc. All rights reserved. + * Copyright (c) 2015-2026 Advanced Micro Devices, Inc. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -47,13 +47,36 @@ struct clip : op_builder bool max_used = args.size() == 3 and not args[2]->is_undefined(); bool min_used = args.size() >= 2 and not args[1]->is_undefined(); - if(min_used and max_used) - return {insert_common_op(m, ins, make_op("clip"), args)}; - if(max_used) - return {insert_common_op(m, ins, "min", args[0], args[2])}; - if(min_used) - return {insert_common_op(m, ins, "max", args[0], args[1])}; - return {m.insert_instruction(ins, make_op("identity"), args[0])}; + auto op_res = [&]() { + if(min_used and max_used) + { + return insert_common_op(m, ins, make_op("clip"), args); + } + else if(max_used) + { + return insert_common_op(m, ins, "min", args[0], args[2]); + } + else if(min_used) + { + return insert_common_op(m, ins, "max", args[0], args[1]); + } + else + { + return m.insert_instruction(ins, make_op("identity"), args[0]); + } + }(); + + auto op_type = op_res->get_shape().type(); + auto input_type = args[0]->get_shape().type(); + if(op_type != input_type) + { + return {m.insert_instruction( + ins, make_op("convert", {{"target_type", input_type}}), op_res)}; + } + else + { + return {op_res}; + } } };