@@ -146,27 +146,21 @@ Status Pad::ComputeInternal(ComputeContext& context) const {
146146 uint16_t value = math::floatToHalf (value_);
147147 std::memcpy (&value_uint32, &value, sizeof (value));
148148 } else {
149- value_uint32 = * reinterpret_cast < const uint32_t *>( &value_);
149+ std::memcpy (& value_uint32, &value_, sizeof (value_uint32) );
150150 }
151151 } else if (value_tensor) {
152152 ORT_ENFORCE (value_tensor->DataType () == input_tensor->DataType () && value_tensor->Shape ().Size () == 1 ,
153153 " Value tensor should be a 1D tensor of size 1 with the same type as that of the input tensor" );
154154 switch (data_type) {
155- case ONNX_NAMESPACE::TensorProto_DataType_INT32: {
156- int32_t value = value_tensor->Data <int32_t >()[0 ];
157- value_uint32 = *reinterpret_cast <uint32_t *>(&value);
158- } break ;
159- case ONNX_NAMESPACE::TensorProto_DataType_FLOAT: {
160- float value = value_tensor->Data <float >()[0 ];
161- value_uint32 = *reinterpret_cast <uint32_t *>(&value);
162- } break ;
163155 case ONNX_NAMESPACE::TensorProto_DataType_FLOAT16: {
164156 uint16_t value = value_tensor->Data <MLFloat16>()[0 ].val ;
165157 std::memcpy (&value_uint32, &value, sizeof (value));
166158 } break ;
167- case ONNX_NAMESPACE::TensorProto_DataType_UINT32: {
168- value_uint32 = value_tensor->Data <uint32_t >()[0 ];
169- } break ;
159+ case ONNX_NAMESPACE::TensorProto_DataType_INT32:
160+ case ONNX_NAMESPACE::TensorProto_DataType_FLOAT:
161+ case ONNX_NAMESPACE::TensorProto_DataType_UINT32:
162+ std::memcpy (&value_uint32, value_tensor->DataRaw (), sizeof (value_uint32));
163+ break ;
170164 default :
171165 return ORT_MAKE_STATUS (ONNXRUNTIME, INVALID_ARGUMENT, " Unsupported input type: " , static_cast <int >(data_type));
172166 }
0 commit comments