From 023cdfb22190f184d2fc869973195c66041e8ae2 Mon Sep 17 00:00:00 2001 From: yefeng Date: Mon, 29 Mar 2021 16:04:14 +0800 Subject: [PATCH] issue-1 --- mindspore/lite/nnacl/fp32/arithmetic_fp32.c | 8 ++++++++ mindspore/lite/nnacl/fp32/arithmetic_fp32.h | 1 + mindspore/lite/nnacl/infer/transpose_infer.c | 3 +++ .../lite/src/runtime/kernel/arm/fp32/arithmetic_fp32.cc | 5 +++-- 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/mindspore/lite/nnacl/fp32/arithmetic_fp32.c b/mindspore/lite/nnacl/fp32/arithmetic_fp32.c index bdae1dc1971..e16af7f61c0 100644 --- a/mindspore/lite/nnacl/fp32/arithmetic_fp32.c +++ b/mindspore/lite/nnacl/fp32/arithmetic_fp32.c @@ -145,6 +145,14 @@ int ElementLogicalOr(const float *in0, const float *in1, float *out, int size) { return NNACL_OK; } +int ElementLogicalOrBool(const bool *in0, const bool *in1, bool *out, int size) { + int index = 0; + for (; index < size; index++) { + out[index] = (in0[index]) | (in1[index]); + } + return NNACL_OK; +} + int ElementMaximum(const float *in0, const float *in1, float *out, int size) { int index = 0; #ifdef ENABLE_NEON diff --git a/mindspore/lite/nnacl/fp32/arithmetic_fp32.h b/mindspore/lite/nnacl/fp32/arithmetic_fp32.h index 1580ea3b9f5..b329bf69084 100644 --- a/mindspore/lite/nnacl/fp32/arithmetic_fp32.h +++ b/mindspore/lite/nnacl/fp32/arithmetic_fp32.h @@ -42,6 +42,7 @@ int ElementLogicalAndBool(const bool *in0, const bool *in1, bool *out, int size) /* logical or */ int ElementLogicalOr(const float *in0, const float *in1, float *out, int size); +int ElementLogicalOrBool(const bool *in0, const bool *in1, bool *out, int size); /* max min */ int ElementMaximum(const float *in0, const float *in1, float *out, int size); diff --git a/mindspore/lite/nnacl/infer/transpose_infer.c b/mindspore/lite/nnacl/infer/transpose_infer.c index 8b52e8dadea..24e974a36d1 100644 --- a/mindspore/lite/nnacl/infer/transpose_infer.c +++ b/mindspore/lite/nnacl/infer/transpose_infer.c @@ -49,6 +49,9 @@ int TransposeInferShape(const TensorC *const *inputs, size_t inputs_size, Tensor if (perm_tensor->shape_size_ == 0) { return NNACL_INFER_INVALID; } + if (perms_num != 0 && perm_data == NULL) { + return NNACL_INFER_INVALID; + } int perm[MAX_SHAPE_SIZE]; size_t perm_size = 0; for (size_t i = 0; i < perms_num; i++) { diff --git a/mindspore/lite/src/runtime/kernel/arm/fp32/arithmetic_fp32.cc b/mindspore/lite/src/runtime/kernel/arm/fp32/arithmetic_fp32.cc index 5b6cd6588e1..6c3e0e3d4b2 100644 --- a/mindspore/lite/src/runtime/kernel/arm/fp32/arithmetic_fp32.cc +++ b/mindspore/lite/src/runtime/kernel/arm/fp32/arithmetic_fp32.cc @@ -213,8 +213,8 @@ void ArithmeticCPUKernel::InitRunFunction(int primitive_type) { ElementOptDivInt}, {PrimitiveType_LogicalAnd, schema::ActivationType_NO_ACTIVATION, ElementLogicalAnd, ElementLogicalAndInt, ElementLogicalAndBool, nullptr, nullptr}, - {PrimitiveType_LogicalOr, schema::ActivationType_NO_ACTIVATION, ElementLogicalOr, nullptr, nullptr, nullptr, - nullptr}, + {PrimitiveType_LogicalOr, schema::ActivationType_NO_ACTIVATION, ElementLogicalOr, nullptr, ElementLogicalOrBool, + nullptr, nullptr}, {PrimitiveType_Maximum, schema::ActivationType_NO_ACTIVATION, ElementMaximum, ElementMaximumInt, nullptr, nullptr, nullptr}, {PrimitiveType_Minimum, schema::ActivationType_NO_ACTIVATION, ElementMinimum, ElementMinimumInt, nullptr, nullptr, @@ -435,6 +435,7 @@ REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_LogicalAnd, LiteKernelCreator REG_KERNEL(kCPU, kNumberTypeBool, PrimitiveType_LogicalAnd, LiteKernelCreator) REG_KERNEL(kCPU, kNumberTypeInt32, PrimitiveType_LogicalAnd, LiteKernelCreator) REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_LogicalOr, LiteKernelCreator) +REG_KERNEL(kCPU, kNumberTypeBool, PrimitiveType_LogicalOr, LiteKernelCreator) REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_Maximum, LiteKernelCreator) REG_KERNEL(kCPU, kNumberTypeFloat32, PrimitiveType_Minimum, LiteKernelCreator) REG_KERNEL(kCPU, kNumberTypeInt32, PrimitiveType_Maximum, LiteKernelCreator)