CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
56 lines
2.1 KiB
C
56 lines
2.1 KiB
C
// RUN: %clang_analyze_cc1 %s \
|
|
// RUN: -analyzer-checker=core,security.ArrayBound \
|
|
// RUN: -analyzer-checker=debug.ExprInspection \
|
|
// RUN: -triple x86_64-unknown-linux-gnu \
|
|
// RUN: -verify
|
|
|
|
// This test is here to check if there is no significant run-time regression
|
|
// related to the assume machinery. The analysis should finish in less than 10
|
|
// seconds.
|
|
|
|
// expected-no-diagnostics
|
|
|
|
typedef unsigned char uint8_t;
|
|
typedef unsigned short uint16_t;
|
|
typedef unsigned long uint64_t;
|
|
|
|
int filter_slice_word(int sat_linesize, int sigma, int radius, uint64_t *sat,
|
|
uint64_t *square_sat, int width, int height,
|
|
int src_linesize, int dst_linesize, const uint16_t *src,
|
|
uint16_t *dst, int jobnr, int nb_jobs) {
|
|
const int starty = height * jobnr / nb_jobs;
|
|
const int endy = height * (jobnr + 1) / nb_jobs;
|
|
|
|
for (int y = starty; y < endy; y++) {
|
|
|
|
int lower_y = y - radius < 0 ? 0 : y - radius;
|
|
int higher_y = y + radius + 1 > height ? height : y + radius + 1;
|
|
int dist_y = higher_y - lower_y;
|
|
|
|
for (int x = 0; x < width; x++) {
|
|
|
|
int lower_x = x - radius < 0 ? 0 : x - radius;
|
|
int higher_x = x + radius + 1 > width ? width : x + radius + 1;
|
|
int count = dist_y * (higher_x - lower_x);
|
|
|
|
// The below hunk caused significant regression in run-time.
|
|
#if 1
|
|
uint64_t sum = sat[higher_y * sat_linesize + higher_x] -
|
|
sat[higher_y * sat_linesize + lower_x] -
|
|
sat[lower_y * sat_linesize + higher_x] +
|
|
sat[lower_y * sat_linesize + lower_x];
|
|
uint64_t square_sum = square_sat[higher_y * sat_linesize + higher_x] -
|
|
square_sat[higher_y * sat_linesize + lower_x] -
|
|
square_sat[lower_y * sat_linesize + higher_x] +
|
|
square_sat[lower_y * sat_linesize + lower_x];
|
|
uint64_t mean = sum / count;
|
|
uint64_t var = (square_sum - sum * sum / count) / count;
|
|
dst[y * dst_linesize + x] =
|
|
(sigma * mean + var * src[y * src_linesize + x]) / (sigma + var);
|
|
#endif
|
|
|
|
}
|
|
}
|
|
return 0;
|
|
}
|