Skip to content

risc-v: fix RVV backend on clang with undefined CV_RVV_SCALABLE#22922

Merged
opencv-pushbot merged 1 commit intoopencv:4.xfrom
alalek:fix_riscv_intrin_rvv
Dec 8, 2022
Merged

risc-v: fix RVV backend on clang with undefined CV_RVV_SCALABLE#22922
opencv-pushbot merged 1 commit intoopencv:4.xfrom
alalek:fix_riscv_intrin_rvv

Conversation

@alalek
Copy link
Copy Markdown
Member

@alalek alalek commented Dec 6, 2022

  • v_interleave_quads
  • v_pack_triplets
  • v_signmask

relates #18228

Resolved test failures:

Details
[ RUN      ] hal_intrin128.uint8x16_BASELINE
SIMD128: void opencv_test::hal::intrin128::cpu_baseline::test_hal_intrin_uint8()
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:523: Failure
Expected equality of these values:
  resQ[8*i]
    Which is: '\x5' (5)
  dataA[8*i ]
    Which is: '\t' (9)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:524: Failure
Expected equality of these values:
  resQ[8*i + 1]
    Which is: '\t' (9)
  dataA[8*i+4]
    Which is: '\r' (13, 0xD)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:525: Failure
Expected equality of these values:
  resQ[8*i + 2]
    Which is: '\x6' (6)
  dataA[8*i+1]
    Which is: '\n' (10, 0xA)
With diff:
@@ -1,1 +1,2 @@
-'\x6' (6)
+'
+' (10, 0xA)

Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:526: Failure
Expected equality of these values:
  resQ[8*i + 3]
    Which is: '\n' (10, 0xA)
  dataA[8*i+5]
    Which is: '\xE' (14)
With diff:
@@ -1,2 +1,1 @@
-'
-' (10, 0xA)
+'\xE' (14)

Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:527: Failure
Expected equality of these values:
  resQ[8*i + 4]
    Which is: '\a' (7)
  dataA[8*i+2]
    Which is: '\v' (11, 0xB)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:528: Failure
Expected equality of these values:
  resQ[8*i + 5]
    Which is: '\v' (11, 0xB)
  dataA[8*i+6]
    Which is: '\xF' (15)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:529: Failure
Expected equality of these values:
  resQ[8*i + 6]
    Which is: '\b' (8)
  dataA[8*i+3]
    Which is: '\f' (12, 0xC)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:530: Failure
Expected equality of these values:
  resQ[8*i + 7]
    Which is: '\f' (12, 0xC)
  dataA[8*i+7]
    Which is: '\x10' (16)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
[  FAILED  ] hal_intrin128.uint8x16_BASELINE (23 ms)
[ RUN      ] hal_intrin128.int8x16_BASELINE
SIMD128: void opencv_test::hal::intrin128::cpu_baseline::test_hal_intrin_int8()
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:523: Failure
Expected equality of these values:
  resQ[8*i]
    Which is: '\x5' (5)
  dataA[8*i ]
    Which is: '\t' (9)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:524: Failure
Expected equality of these values:
  resQ[8*i + 1]
    Which is: '\t' (9)
  dataA[8*i+4]
    Which is: '\r' (13, 0xD)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:525: Failure
Expected equality of these values:
  resQ[8*i + 2]
    Which is: '\x6' (6)
  dataA[8*i+1]
    Which is: '\n' (10, 0xA)
With diff:
@@ -1,1 +1,2 @@
-'\x6' (6)
+'
+' (10, 0xA)

Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:526: Failure
Expected equality of these values:
  resQ[8*i + 3]
    Which is: '\n' (10, 0xA)
  dataA[8*i+5]
    Which is: '\xE' (14)
With diff:
@@ -1,2 +1,1 @@
-'
-' (10, 0xA)
+'\xE' (14)

Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:527: Failure
Expected equality of these values:
  resQ[8*i + 4]
    Which is: '\a' (7)
  dataA[8*i+2]
    Which is: '\v' (11, 0xB)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:528: Failure
Expected equality of these values:
  resQ[8*i + 5]
    Which is: '\v' (11, 0xB)
  dataA[8*i+6]
    Which is: '\xF' (15)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:529: Failure
Expected equality of these values:
  resQ[8*i + 6]
    Which is: '\b' (8)
  dataA[8*i+3]
    Which is: '\f' (12, 0xC)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:530: Failure
Expected equality of these values:
  resQ[8*i + 7]
    Which is: '\f' (12, 0xC)
  dataA[8*i+7]
    Which is: '\x10' (16)
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:522: i=1
[  FAILED  ] hal_intrin128.int8x16_BASELINE (11 ms)
[ RUN      ] hal_intrin128.uint16x8_BASELINE
SIMD128: void opencv_test::hal::intrin128::cpu_baseline::test_hal_intrin_uint16()
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1177: Failure
Expected equality of these values:
  dataA[4*i+1]
    Which is: 2
  res[3*i+1]
    Which is: 770
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=0
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1178: Failure
Expected equality of these values:
  dataA[4*i+2]
    Which is: 3
  res[3*i+2]
    Which is: 1024
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=0
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1177: Failure
Expected equality of these values:
  dataA[4*i+1]
    Which is: 6
  res[3*i+1]
    Which is: 1798
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1178: Failure
Expected equality of these values:
  dataA[4*i+2]
    Which is: 7
  res[3*i+2]
    Which is: 2048
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=1
[  FAILED  ] hal_intrin128.uint16x8_BASELINE (15 ms)
[ RUN      ] hal_intrin128.int16x8_BASELINE
SIMD128: void opencv_test::hal::intrin128::cpu_baseline::test_hal_intrin_int16()
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1177: Failure
Expected equality of these values:
  dataA[4*i+1]
    Which is: 2
  res[3*i+1]
    Which is: 770
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=0
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1178: Failure
Expected equality of these values:
  dataA[4*i+2]
    Which is: 3
  res[3*i+2]
    Which is: 1024
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=0
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1177: Failure
Expected equality of these values:
  dataA[4*i+1]
    Which is: 6
  res[3*i+1]
    Which is: 1798
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=1
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1178: Failure
Expected equality of these values:
  dataA[4*i+2]
    Which is: 7
  res[3*i+2]
    Which is: 2048
Google Test trace:
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1175: i=1
[  FAILED  ] hal_intrin128.int16x8_BASELINE (9 ms)
[ RUN      ] hal_intrin128.int32x4_BASELINE
SIMD128: void opencv_test::hal::intrin128::cpu_baseline::test_hal_intrin_int32()
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1103: Failure
Expected equality of these values:
  2
  v_signmask(a)
    Which is: 242
[  FAILED  ] hal_intrin128.int32x4_BASELINE (12 ms)
[ RUN      ] hal_intrin128.uint32x4_BASELINE
SIMD128: void opencv_test::hal::intrin128::cpu_baseline::test_hal_intrin_uint32()
/home/alalek/projects/opencv/dev/modules/core/test/test_intrin_utils.hpp:1103: Failure
Expected equality of these values:
  2
  v_signmask(a)
    Which is: 242
[  FAILED  ] hal_intrin128.uint32x4_BASELINE (7 ms)

CMake options:

cmake -GNinja <opencv_src> -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF -DCMAKE_TOOLCHAIN_FILE=<opencv_src>/platforms/linux/riscv64-clang.toolchain.cmake -DRISCV_CLANG_BUILD_ROOT=<sc-ide_dir>/llvm -DRISCV_GCC_INSTALL_ROOT=<sc-ide_dir>/riscv-gcc -DBUILD_WITH_DEBUG_INFO=ON -DCPU_BASELINE=RVV -DRISCV_RVV_SCALABLE=OFF

QEMU: v7.0.0

RISCV builds:

- v_interleave_quads
- v_pack_triplets
- v_signmask
@asmorkalov
Copy link
Copy Markdown
Contributor

/cc @hanliutong

@opencv-pushbot opencv-pushbot merged commit 281b790 into opencv:4.x Dec 8, 2022
@alalek alalek mentioned this pull request Jan 8, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants