From: Francisco Jerez Date: Mon, 25 Jun 2018 19:06:50 +0000 (-0700) Subject: intel/eu: Define SET_BITS helper more easily reusable than SET_FIELD. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=20b962232b71c8f5931ddb585386725804dbd4e0;p=mesa.git intel/eu: Define SET_BITS helper more easily reusable than SET_FIELD. Allows to specify a bitfield based on its upper and lower bounds instead of a symbolic field definition, kind of what the current GET_BITS macro is to GET_FIELD. Reviewed-by: Kenneth Graunke --- diff --git a/src/intel/compiler/brw_eu_defines.h b/src/intel/compiler/brw_eu_defines.h index f6d771d1534..fb8caa60715 100644 --- a/src/intel/compiler/brw_eu_defines.h +++ b/src/intel/compiler/brw_eu_defines.h @@ -46,6 +46,13 @@ fieldval & field ## _MASK; \ }) +#define SET_BITS(value, high, low) \ + ({ \ + const uint32_t fieldval = (value) << (low); \ + assert((fieldval & ~INTEL_MASK(high, low)) == 0); \ + fieldval & INTEL_MASK(high, low); \ + }) + #define GET_BITS(data, high, low) ((data & INTEL_MASK((high), (low))) >> (low)) #define GET_FIELD(word, field) (((word) & field ## _MASK) >> field ## _SHIFT)