static inline uint64_t
brw_inst_bits(const brw_inst *inst, unsigned high, unsigned low)
{
+ assert(high < 128);
assert(high >= low);
/* We assume the field doesn't cross 64-bit boundaries. */
const unsigned word = high / 64;
static inline void
brw_inst_set_bits(brw_inst *inst, unsigned high, unsigned low, uint64_t value)
{
+ assert(high < 128);
assert(high >= low);
const unsigned word = high / 64;
assert(word == low / 64);
F(debug_control, /* 4+ */ 7, 7, /* 12+ */ 7, 7)
F(hw_opcode, /* 4+ */ 6, 0, /* 12+ */ 6, 0) /* Same location as brw_inst */
+static inline unsigned
+brw_compact_inst_imm(const struct gen_device_info *devinfo,
+ const brw_compact_inst *inst)
+{
+ if (devinfo->gen >= 12) {
+ return brw_compact_inst_bits(inst, 63, 52);
+ } else {
+ return (brw_compact_inst_bits(inst, 39, 35) << 8) |
+ (brw_compact_inst_bits(inst, 63, 56));
+ }
+}
+
/**
* (Gen8+) Compacted three-source instructions:
* @{