}
bool
-brw_simd_should_compile(void *mem_ctx,
- unsigned simd,
- const struct intel_device_info *devinfo,
- struct brw_cs_prog_data *prog_data,
- unsigned required,
- const char **error)
-
+brw_simd_should_compile(brw_simd_selection_state &state,
+ unsigned simd)
{
+ struct brw_cs_prog_data *prog_data = state.prog_data;
assert(!test_bit(prog_data->prog_mask, simd));
- assert(error);
const unsigned width = 8u << simd;
if (!workgroup_size_variable) {
if (test_bit(prog_data->prog_spilled, simd)) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u skipped because would spill", width);
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u skipped because would spill", width);
return false;
}
prog_data->local_size[1] *
prog_data->local_size[2];
- unsigned max_threads = devinfo->max_cs_workgroup_threads;
+ unsigned max_threads = state.devinfo->max_cs_workgroup_threads;
- if (required && required != width) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u skipped because required dispatch width is %u",
- width, required);
+ if (state.required_width && state.required_width != width) {
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u skipped because required dispatch width is %u",
+ width, state.required_width);
return false;
}
if (simd > 0 && test_bit(prog_data->prog_mask, simd - 1) &&
workgroup_size <= (width / 2)) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u skipped because workgroup size %u already fits in SIMD%u",
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u skipped because workgroup size %u already fits in SIMD%u",
width, workgroup_size, width / 2);
return false;
}
if (DIV_ROUND_UP(workgroup_size, width) > max_threads) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u can't fit all %u invocations in %u threads",
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u can't fit all %u invocations in %u threads",
width, workgroup_size, max_threads);
return false;
}
*/
if (width == 32) {
if (!INTEL_DEBUG(DEBUG_DO32) && prog_data->prog_mask) {
- *error = ralloc_strdup(
- mem_ctx, "SIMD32 skipped because not required");
+ state.error[simd] = ralloc_strdup(
+ state.mem_ctx, "SIMD32 skipped because not required");
return false;
}
}
}
if (width == 32 && prog_data->base.ray_queries > 0) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u skipped because of ray queries",
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u skipped because of ray queries",
width);
return false;
}
if (width == 32 && prog_data->uses_btd_stack_ids) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u skipped because of bindless shader calls",
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u skipped because of bindless shader calls",
width);
return false;
}
};
if (unlikely(env_skip[simd])) {
- *error = ralloc_asprintf(
- mem_ctx, "SIMD%u skipped because INTEL_DEBUG=no%u",
+ state.error[simd] = ralloc_asprintf(
+ state.mem_ctx, "SIMD%u skipped because INTEL_DEBUG=no%u",
width, width);
return false;
}
}
void
-brw_simd_mark_compiled(unsigned simd, struct brw_cs_prog_data *prog_data, bool spilled)
+brw_simd_mark_compiled(brw_simd_selection_state &state, unsigned simd, bool spilled)
{
+ struct brw_cs_prog_data *prog_data = state.prog_data;
assert(!test_bit(prog_data->prog_mask, simd));
prog_data->prog_mask |= 1u << simd;
}
int
-brw_simd_select(const struct brw_cs_prog_data *prog_data)
+brw_simd_select(const struct brw_simd_selection_state &state)
{
+ const struct brw_cs_prog_data *prog_data = state.prog_data;
assert((prog_data->prog_mask & ~0x7u) == 0);
const unsigned not_spilled_mask =
prog_data->prog_mask & ~prog_data->prog_spilled;
{
if (!sizes || (prog_data->local_size[0] == sizes[0] &&
prog_data->local_size[1] == sizes[1] &&
- prog_data->local_size[2] == sizes[2]))
- return brw_simd_select(prog_data);
-
- void *mem_ctx = ralloc_context(NULL);
+ prog_data->local_size[2] == sizes[2])) {
+ const brw_simd_selection_state simd_state{
+ .prog_data = const_cast<struct brw_cs_prog_data *>(prog_data),
+ };
+ return brw_simd_select(simd_state);
+ }
struct brw_cs_prog_data cloned = *prog_data;
for (unsigned i = 0; i < 3; i++)
cloned.prog_mask = 0;
cloned.prog_spilled = 0;
- const char *error[3] = {0};
+ void *mem_ctx = ralloc_context(NULL);
+
+ brw_simd_selection_state simd_state{
+ .mem_ctx = mem_ctx,
+ .devinfo = devinfo,
+ .prog_data = &cloned,
+ };
for (unsigned simd = 0; simd < 3; simd++) {
/* We are not recompiling, so use original results of prog_mask and
* prog_spilled as they will already contain all possible compilations.
*/
- if (brw_simd_should_compile(mem_ctx, simd, devinfo, &cloned,
- 0 /* required_dispatch_width */, &error[simd]) &&
+ if (brw_simd_should_compile(simd_state, simd) &&
test_bit(prog_data->prog_mask, simd)) {
- brw_simd_mark_compiled(simd, &cloned, test_bit(prog_data->prog_spilled, simd));
+ brw_simd_mark_compiled(simd_state, simd, test_bit(prog_data->prog_spilled, simd));
}
}
ralloc_free(mem_ctx);
- return brw_simd_select(&cloned);
+ return brw_simd_select(simd_state);
}
class SIMDSelectionTest : public ::testing::Test {
protected:
- SIMDSelectionTest() : error{NULL, NULL, NULL} {
- mem_ctx = ralloc_context(NULL);
- devinfo = rzalloc(mem_ctx, intel_device_info);
- prog_data = rzalloc(mem_ctx, struct brw_cs_prog_data);
- required_dispatch_width = 0;
+ SIMDSelectionTest()
+ : mem_ctx(ralloc_context(NULL))
+ , devinfo(rzalloc(mem_ctx, intel_device_info))
+ , prog_data(rzalloc(mem_ctx, struct brw_cs_prog_data))
+ , simd_state{
+ .mem_ctx = mem_ctx,
+ .devinfo = devinfo,
+ .prog_data = prog_data,
+ }
+ {
}
~SIMDSelectionTest() {
ralloc_free(mem_ctx);
};
- bool should_compile(unsigned simd) {
- return brw_simd_should_compile(mem_ctx, simd, devinfo, prog_data,
- required_dispatch_width, &error[simd]);
- }
-
void *mem_ctx;
intel_device_info *devinfo;
struct brw_cs_prog_data *prog_data;
- const char *error[3];
- unsigned required_dispatch_width;
+ brw_simd_selection_state simd_state;
};
class SIMDSelectionCS : public SIMDSelectionTest {
TEST_F(SIMDSelectionCS, DefaultsToSIMD16)
{
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, not_spilled);
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, not_spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD16);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD16);
}
TEST_F(SIMDSelectionCS, TooBigFor16)
prog_data->local_size[1] = 32;
prog_data->local_size[2] = 1;
- ASSERT_FALSE(should_compile(SIMD8));
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, spilled);
- ASSERT_EQ(brw_simd_select(prog_data), SIMD32);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD32);
}
TEST_F(SIMDSelectionCS, WorkgroupSize1)
prog_data->local_size[1] = 1;
prog_data->local_size[2] = 1;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD8);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD8);
}
TEST_F(SIMDSelectionCS, WorkgroupSize8)
prog_data->local_size[1] = 1;
prog_data->local_size[2] = 1;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD8);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD8);
}
TEST_F(SIMDSelectionCS, WorkgroupSizeVariable)
prog_data->local_size[1] = 0;
prog_data->local_size[2] = 0;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, not_spilled);
ASSERT_EQ(prog_data->prog_mask, 1u << SIMD8 | 1u << SIMD16 | 1u << SIMD32);
prog_data->local_size[1] = 0;
prog_data->local_size[2] = 0;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, spilled);
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, spilled);
ASSERT_EQ(prog_data->prog_mask, 1u << SIMD8 | 1u << SIMD16 | 1u << SIMD32);
prog_data->local_size[1] = 0;
prog_data->local_size[2] = 0;
- ASSERT_TRUE(should_compile(SIMD8));
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, not_spilled);
ASSERT_EQ(prog_data->prog_mask, 1u << SIMD16 | 1u << SIMD32);
prog_data->local_size[1] = 0;
prog_data->local_size[2] = 0;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, not_spilled);
ASSERT_EQ(prog_data->prog_mask, 1u << SIMD8 | 1u << SIMD32);
prog_data->local_size[1] = 0;
prog_data->local_size[2] = 0;
- ASSERT_TRUE(should_compile(SIMD8));
- ASSERT_TRUE(should_compile(SIMD16));
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, not_spilled);
ASSERT_EQ(prog_data->prog_mask, 1u << SIMD32);
TEST_F(SIMDSelectionCS, SpillAtSIMD8)
{
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, spilled);
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD8);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD8);
}
TEST_F(SIMDSelectionCS, SpillAtSIMD16)
{
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, spilled);
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD8);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD8);
}
TEST_F(SIMDSelectionCS, EnvironmentVariable32)
{
intel_debug |= DEBUG_DO32;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, not_spilled);
- ASSERT_EQ(brw_simd_select(prog_data), SIMD32);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD32);
}
TEST_F(SIMDSelectionCS, EnvironmentVariable32ButSpills)
{
intel_debug |= DEBUG_DO32;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, not_spilled);
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, not_spilled);
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, spilled);
- ASSERT_EQ(brw_simd_select(prog_data), SIMD16);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD16);
}
TEST_F(SIMDSelectionCS, Require8)
{
- required_dispatch_width = 8;
+ simd_state.required_width = 8;
- ASSERT_TRUE(should_compile(SIMD8));
- brw_simd_mark_compiled(SIMD8, prog_data, not_spilled);
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ brw_simd_mark_compiled(simd_state, SIMD8, not_spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD8);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD8);
}
TEST_F(SIMDSelectionCS, Require8ErrorWhenNotCompile)
{
- required_dispatch_width = 8;
+ simd_state.required_width = 8;
- ASSERT_TRUE(should_compile(SIMD8));
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), -1);
+ ASSERT_EQ(brw_simd_select(simd_state), -1);
}
TEST_F(SIMDSelectionCS, Require16)
{
- required_dispatch_width = 16;
+ simd_state.required_width = 16;
- ASSERT_FALSE(should_compile(SIMD8));
- ASSERT_TRUE(should_compile(SIMD16));
- brw_simd_mark_compiled(SIMD16, prog_data, not_spilled);
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ brw_simd_mark_compiled(simd_state, SIMD16, not_spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), SIMD16);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD16);
}
TEST_F(SIMDSelectionCS, Require16ErrorWhenNotCompile)
{
- required_dispatch_width = 16;
+ simd_state.required_width = 16;
- ASSERT_FALSE(should_compile(SIMD8));
- ASSERT_TRUE(should_compile(SIMD16));
- ASSERT_FALSE(should_compile(SIMD32));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), -1);
+ ASSERT_EQ(brw_simd_select(simd_state), -1);
}
TEST_F(SIMDSelectionCS, Require32)
{
- required_dispatch_width = 32;
+ simd_state.required_width = 32;
- ASSERT_FALSE(should_compile(SIMD8));
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_TRUE(should_compile(SIMD32));
- brw_simd_mark_compiled(SIMD32, prog_data, not_spilled);
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
+ brw_simd_mark_compiled(simd_state, SIMD32, not_spilled);
- ASSERT_EQ(brw_simd_select(prog_data), SIMD32);
+ ASSERT_EQ(brw_simd_select(simd_state), SIMD32);
}
TEST_F(SIMDSelectionCS, Require32ErrorWhenNotCompile)
{
- required_dispatch_width = 32;
+ simd_state.required_width = 32;
- ASSERT_FALSE(should_compile(SIMD8));
- ASSERT_FALSE(should_compile(SIMD16));
- ASSERT_TRUE(should_compile(SIMD32));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD8));
+ ASSERT_FALSE(brw_simd_should_compile(simd_state, SIMD16));
+ ASSERT_TRUE(brw_simd_should_compile(simd_state, SIMD32));
- ASSERT_EQ(brw_simd_select(prog_data), -1);
+ ASSERT_EQ(brw_simd_select(simd_state), -1);
}