Files
intel-hard-graphics/src/panfrost/compiler/bifrost/bi_quirks.h
T
2026-06-06 13:25:15 +03:00

45 lines
1.3 KiB
C

/*
* Copyright (C) 2019-2020 Collabora, Ltd.
* SPDX-License-Identifier: MIT
*/
#ifndef __BI_QUIRKS_H
#define __BI_QUIRKS_H
#include "panfrost/model/pan_model.h"
/* Model-specific quirks requiring compiler workarounds/etc. Quirks
* may be errata requiring a workaround, or features. We're trying to be
* quirk-positive here; quirky is the best! */
/* Whether this GPU lacks support for fp32 transcendentals, requiring backend
* lowering to low-precision lookup tables and polynomial approximation */
#define BIFROST_NO_FP32_TRANSCENDENTALS (1 << 0)
/* Whether this GPU lacks support for the full form of the CLPER instruction.
* These GPUs use a simple encoding of CLPER that does not support
* inactive_result, subgroup_size, or lane_op. Using those features requires
* lowering to additional ALU instructions. The encoding forces inactive_result
* = zero, subgroup_size = subgroup4, and lane_op = none. */
#define BIFROST_LIMITED_CLPER (1 << 1)
static inline unsigned
bifrost_get_quirks(uint64_t gpu_id)
{
unsigned arch_maj_min =
(PAN_ARCH_MAJOR(gpu_id) << 4) | PAN_ARCH_MINOR(gpu_id);
switch (arch_maj_min) {
case 0x60: /* G71 */
return BIFROST_NO_FP32_TRANSCENDENTALS | BIFROST_LIMITED_CLPER;
case 0x62: /* G72 */
case 0x70: /* G31 */
return BIFROST_LIMITED_CLPER;
default:
return 0;
}
}
#endif