Skip to content

hal_intrinsics operators breakage in 4.11 #27267

@artyom-beilis

Description

@artyom-beilis

System Information

System: Ubuntu x64 20.04 but not really matter
gcc 9.3

Detailed description

4.11 breaks backward compatibility for hal/intrin.hpp

Steps to reproduce

Sample code

#include <opencv2/core/hal/intrin.hpp>
#include <iostream>
int main()
{
        cv::v_float32x4 x=cv::v_setall_f32(1.0f);
        cv::v_float32x4 y=cv::v_setall_f32(2.0f);
        cv::v_float32x4 z=x+y;
        std::cout << z.get0() << std::endl;
}

Using OpenCV 4.10 and below:

$ g++ -I /path/to/opencv4.10/opencv4 -O2 -g -Wall test.cpp 
$ ./a.out
3

Using OpenCV 4.11

$ g++ -I /path/to/opencv4.11/opencv4 -O2 -g -Wall test.cpp 
test.cpp: In function 'int main()':
test.cpp:7:21: error: no match for 'operator+' (operand types are 'cv::hal_baseline::v_float32x4' and 'cv::hal_baseline::v_float32x4')
    7 |  cv::v_float32x4 z=x+y;
      |                    ~^~
      |                    | |
      |                    | cv::hal_baseline::v_float32x4
      |                    cv::hal_baseline::v_float32x4

Issue submission checklist

  • I report the issue, it's not a question
  • I checked the problem with documentation, FAQ, open issues, forum.opencv.org, Stack Overflow, etc and have not found any solution
  • I updated to the latest OpenCV version and the issue is still there
  • There is reproducer code and related data files (videos, images, onnx, etc)

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions