// Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.//// Licensed under the Apache License, Version 2.0 (the "License");// you may not use this file except in compliance with the License.// You may obtain a copy of the License at//// http://www.apache.org/licenses/LICENSE-2.0//// Unless required by applicable law or agreed to in writing, software// distributed under the License is distributed on an "AS IS" BASIS,// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.// See the License for the specific language governing permissions and// limitations under the License.#pragma once#include "paddle/fluid/prim/api/manual/prim_api/prim_api.h"#include "paddle/fluid/prim/api/manual/utils/utils.h"namespacepaddle{namespaceprim{// This function should have as same signature as phi, which defined in// paddle/phi/api/backward/backward_api.htemplate<typenameT>voidtanh_grad(constTensor&out,constTensor&grad_out,Tensor*grad_x){autotmp=pow<T>(out,2.0);tmp=scale<T>(tmp,-1.0,1.0,true);autograd_x_tmp=multiply<T>(grad_out,tmp);grad_x->set_impl(grad_x_tmp.impl());}}// namespace prim}// namespace paddle