================ @@ -0,0 +1,456 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +/// +/// \file +/// Watchpoint-based data race detector for GPU targets. +/// +//===----------------------------------------------------------------------===// + +#include <gpuintrin.h> + +#include "csan_offload_packet.h" +#include "csan_watch.h" +#include "sanitizer_common/sanitizer_internal_defs.h" +#include "shared/rpc.h" + +using namespace __sanitizer; + +#define INTERFACE extern "C" SANITIZER_INTERFACE_ATTRIBUTE + +extern "C" { +// Externally initialized by the sanitizer, keeps one table per active device. +[[gnu::visibility("protected")]] u64 *__csan_watchpoint_table = nullptr; +} + +static constexpr u64 SAMPLE_DELAY_MIN_NS = 1000; +static constexpr u64 SAMPLE_DELAY_MAX_NS = 10000; +static constexpr u32 WP_CHANCE = 8; +static_assert((CSAN_WATCHPOINT_TABLE_ENTRIES & + (CSAN_WATCHPOINT_TABLE_ENTRIES - 1)) == 0, + "watchpoint table size must be a power of two"); +static_assert(WP_CHANCE >= 2 && (WP_CHANCE & (WP_CHANCE - 1)) == 0, + "WP_CHANCE must be a power of two"); + +// The GPU case does ---------------- yxsamliu wrote:
This comment and `Using ... ignored on the device` below look incomplete. Could you finish or remove them? https://github.com/llvm/llvm-project/pull/225782 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
