mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-25 02:10:11 +01:00
intel/fs: Refactor some cmod propagation tests
This will simplify some later changes to these tests. v2: Combine test_positive_saturate_prop and test_negative_saturate_prop into a single function. Suggested by Marcin. Reviewed-by: Marcin Ślusarz <marcin.slusarz@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/12045>
This commit is contained in:
parent
66fa676e8d
commit
3afefb0818
1 changed files with 154 additions and 124 deletions
|
|
@ -40,15 +40,12 @@ public:
|
|||
struct gl_shader_program *shader_prog;
|
||||
fs_visitor *v;
|
||||
|
||||
void test_positive_float_saturate_prop(enum brw_conditional_mod before,
|
||||
enum brw_conditional_mod after,
|
||||
enum opcode op);
|
||||
|
||||
void test_negative_float_saturate_prop(enum brw_conditional_mod before,
|
||||
enum opcode op);
|
||||
|
||||
void test_negative_int_saturate_prop(enum brw_conditional_mod before,
|
||||
enum opcode op);
|
||||
void test_saturate_prop(enum brw_conditional_mod before,
|
||||
enum brw_conditional_mod after,
|
||||
enum opcode op,
|
||||
enum brw_reg_type add_type,
|
||||
enum brw_reg_type op_type,
|
||||
bool expected_cmod_prop_progress);
|
||||
};
|
||||
|
||||
class cmod_propagation_fs_visitor : public fs_visitor
|
||||
|
|
@ -1504,22 +1501,31 @@ TEST_F(cmod_propagation_test, signed_unsigned_comparison_mismatch)
|
|||
}
|
||||
|
||||
void
|
||||
cmod_propagation_test::test_positive_float_saturate_prop(enum brw_conditional_mod before,
|
||||
enum brw_conditional_mod after,
|
||||
enum opcode op)
|
||||
cmod_propagation_test::test_saturate_prop(enum brw_conditional_mod before,
|
||||
enum brw_conditional_mod after,
|
||||
enum opcode op,
|
||||
enum brw_reg_type add_type,
|
||||
enum brw_reg_type op_type,
|
||||
bool expected_cmod_prop_progress)
|
||||
{
|
||||
const fs_builder &bld = v->bld;
|
||||
fs_reg dest = v->vgrf(glsl_type::float_type);
|
||||
fs_reg src0 = v->vgrf(glsl_type::float_type);
|
||||
fs_reg src1 = v->vgrf(glsl_type::float_type);
|
||||
fs_reg zero(brw_imm_f(0.0f));
|
||||
fs_reg dest = bld.vgrf(add_type);
|
||||
fs_reg src0 = bld.vgrf(add_type);
|
||||
fs_reg src1 = bld.vgrf(add_type);
|
||||
fs_reg zero(brw_imm_ud(0));
|
||||
|
||||
bld.ADD(dest, src0, src1)->saturate = true;
|
||||
|
||||
assert(op == BRW_OPCODE_CMP || op == BRW_OPCODE_MOV);
|
||||
if (op == BRW_OPCODE_CMP)
|
||||
bld.CMP(bld.null_reg_f(), dest, zero, before);
|
||||
else
|
||||
bld.MOV(bld.null_reg_f(), dest)->conditional_mod = before;
|
||||
if (op == BRW_OPCODE_CMP) {
|
||||
bld.CMP(bld.vgrf(op_type, 0),
|
||||
retype(dest, op_type),
|
||||
retype(zero, op_type),
|
||||
before);
|
||||
} else {
|
||||
bld.MOV(bld.vgrf(op_type, 0), retype(dest, op_type))
|
||||
->conditional_mod = before;
|
||||
}
|
||||
|
||||
v->calculate_cfg();
|
||||
bblock_t *block0 = v->cfg->blocks[0];
|
||||
|
|
@ -1527,80 +1533,31 @@ cmod_propagation_test::test_positive_float_saturate_prop(enum brw_conditional_mo
|
|||
EXPECT_EQ(0, block0->start_ip);
|
||||
EXPECT_EQ(1, block0->end_ip);
|
||||
|
||||
EXPECT_TRUE(cmod_propagation(v));
|
||||
EXPECT_EQ(expected_cmod_prop_progress, cmod_propagation(v));
|
||||
EXPECT_EQ(0, block0->start_ip);
|
||||
EXPECT_EQ(0, block0->end_ip);
|
||||
|
||||
EXPECT_EQ(BRW_OPCODE_ADD, instruction(block0, 0)->opcode);
|
||||
EXPECT_EQ(add_type, instruction(block0, 0)->dst.type);
|
||||
EXPECT_EQ(add_type, instruction(block0, 0)->src[0].type);
|
||||
EXPECT_EQ(add_type, instruction(block0, 0)->src[1].type);
|
||||
EXPECT_TRUE(instruction(block0, 0)->saturate);
|
||||
EXPECT_EQ(after, instruction(block0, 0)->conditional_mod);
|
||||
}
|
||||
|
||||
void
|
||||
cmod_propagation_test::test_negative_float_saturate_prop(enum brw_conditional_mod before,
|
||||
enum opcode op)
|
||||
{
|
||||
const fs_builder &bld = v->bld;
|
||||
fs_reg dest = v->vgrf(glsl_type::float_type);
|
||||
fs_reg src0 = v->vgrf(glsl_type::float_type);
|
||||
fs_reg src1 = v->vgrf(glsl_type::float_type);
|
||||
fs_reg zero(brw_imm_f(0.0f));
|
||||
bld.ADD(dest, src0, src1)->saturate = true;
|
||||
if (expected_cmod_prop_progress) {
|
||||
EXPECT_EQ(0, block0->end_ip);
|
||||
EXPECT_EQ(after, instruction(block0, 0)->conditional_mod);
|
||||
} else {
|
||||
EXPECT_EQ(BRW_CONDITIONAL_NONE, instruction(block0, 0)->conditional_mod);
|
||||
|
||||
assert(op == BRW_OPCODE_CMP || op == BRW_OPCODE_MOV);
|
||||
if (op == BRW_OPCODE_CMP)
|
||||
bld.CMP(bld.null_reg_f(), dest, zero, before);
|
||||
else
|
||||
bld.MOV(bld.null_reg_f(), dest)->conditional_mod = before;
|
||||
|
||||
v->calculate_cfg();
|
||||
bblock_t *block0 = v->cfg->blocks[0];
|
||||
|
||||
EXPECT_EQ(0, block0->start_ip);
|
||||
EXPECT_EQ(1, block0->end_ip);
|
||||
|
||||
EXPECT_FALSE(cmod_propagation(v));
|
||||
EXPECT_EQ(0, block0->start_ip);
|
||||
EXPECT_EQ(1, block0->end_ip);
|
||||
EXPECT_EQ(BRW_OPCODE_ADD, instruction(block0, 0)->opcode);
|
||||
EXPECT_TRUE(instruction(block0, 0)->saturate);
|
||||
EXPECT_EQ(BRW_CONDITIONAL_NONE, instruction(block0, 0)->conditional_mod);
|
||||
EXPECT_EQ(op, instruction(block0, 1)->opcode);
|
||||
EXPECT_FALSE(instruction(block0, 1)->saturate);
|
||||
EXPECT_EQ(before, instruction(block0, 1)->conditional_mod);
|
||||
}
|
||||
|
||||
void
|
||||
cmod_propagation_test::test_negative_int_saturate_prop(enum brw_conditional_mod before,
|
||||
enum opcode op)
|
||||
{
|
||||
const fs_builder &bld = v->bld;
|
||||
fs_reg dest = v->vgrf(glsl_type::int_type);
|
||||
fs_reg src0 = v->vgrf(glsl_type::int_type);
|
||||
fs_reg src1 = v->vgrf(glsl_type::int_type);
|
||||
fs_reg zero(brw_imm_d(0));
|
||||
bld.ADD(dest, src0, src1)->saturate = true;
|
||||
|
||||
assert(op == BRW_OPCODE_CMP || op == BRW_OPCODE_MOV);
|
||||
if (op == BRW_OPCODE_CMP)
|
||||
bld.CMP(bld.null_reg_d(), dest, zero, before);
|
||||
else
|
||||
bld.MOV(bld.null_reg_d(), dest)->conditional_mod = before;
|
||||
|
||||
v->calculate_cfg();
|
||||
bblock_t *block0 = v->cfg->blocks[0];
|
||||
|
||||
EXPECT_EQ(0, block0->start_ip);
|
||||
EXPECT_EQ(1, block0->end_ip);
|
||||
|
||||
EXPECT_FALSE(cmod_propagation(v));
|
||||
EXPECT_EQ(0, block0->start_ip);
|
||||
EXPECT_EQ(1, block0->end_ip);
|
||||
EXPECT_EQ(BRW_OPCODE_ADD, instruction(block0, 0)->opcode);
|
||||
EXPECT_TRUE(instruction(block0, 0)->saturate);
|
||||
EXPECT_EQ(BRW_CONDITIONAL_NONE, instruction(block0, 0)->conditional_mod);
|
||||
EXPECT_EQ(op, instruction(block0, 1)->opcode);
|
||||
EXPECT_FALSE(instruction(block0, 1)->saturate);
|
||||
EXPECT_EQ(before, instruction(block0, 1)->conditional_mod);
|
||||
/* This is ASSERT_EQ because if end_ip is 0, the instruction(block0, 1)
|
||||
* calls will not work properly, and the test will give weird results.
|
||||
*/
|
||||
ASSERT_EQ(1, block0->end_ip);
|
||||
EXPECT_EQ(op, instruction(block0, 1)->opcode);
|
||||
EXPECT_EQ(op_type, instruction(block0, 1)->dst.type);
|
||||
EXPECT_EQ(op_type, instruction(block0, 1)->src[0].type);
|
||||
EXPECT_FALSE(instruction(block0, 1)->saturate);
|
||||
EXPECT_EQ(before, instruction(block0, 1)->conditional_mod);
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_nz_cmp)
|
||||
|
|
@ -1616,8 +1573,10 @@ TEST_F(cmod_propagation_test, float_saturate_nz_cmp)
|
|||
* = After =
|
||||
* 0: add.sat.g.f0(8) dest src0 src1
|
||||
*/
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_NZ, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_NZ, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_nz_mov)
|
||||
|
|
@ -1633,8 +1592,10 @@ TEST_F(cmod_propagation_test, float_saturate_nz_mov)
|
|||
* = After =
|
||||
* 0: add.sat.g.f0(8) dest src0 src1
|
||||
*/
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_NZ, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_NZ, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_z_cmp)
|
||||
|
|
@ -1650,8 +1611,10 @@ TEST_F(cmod_propagation_test, float_saturate_z_cmp)
|
|||
* = After =
|
||||
* 0: add.sat.le.f0(8) dest src0 src1
|
||||
*/
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_z_mov)
|
||||
|
|
@ -1669,10 +1632,15 @@ TEST_F(cmod_propagation_test, float_saturate_z_mov)
|
|||
*/
|
||||
#if 1
|
||||
/* cmod propagation bails on every MOV except MOV.NZ. */
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_Z, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_Z,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
#else
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -1689,8 +1657,10 @@ TEST_F(cmod_propagation_test, float_saturate_g_cmp)
|
|||
* = After =
|
||||
* 0: add.sat.g.f0(8) dest src0 src1
|
||||
*/
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_g_mov)
|
||||
|
|
@ -1708,10 +1678,15 @@ TEST_F(cmod_propagation_test, float_saturate_g_mov)
|
|||
*/
|
||||
#if 1
|
||||
/* cmod propagation bails on every MOV except MOV.NZ. */
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_G, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
#else
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -1728,8 +1703,10 @@ TEST_F(cmod_propagation_test, float_saturate_le_cmp)
|
|||
* = After =
|
||||
* 0: add.sat.le.f0(8) dest src0 src1
|
||||
*/
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_le_mov)
|
||||
|
|
@ -1747,10 +1724,15 @@ TEST_F(cmod_propagation_test, float_saturate_le_mov)
|
|||
*/
|
||||
#if 1
|
||||
/* cmod propagation bails on every MOV except MOV.NZ. */
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_LE, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
#else
|
||||
test_positive_float_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
true);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
@ -1767,7 +1749,10 @@ TEST_F(cmod_propagation_test, float_saturate_l_cmp)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_L, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_L, BRW_CONDITIONAL_L,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
|
@ -1784,7 +1769,10 @@ TEST_F(cmod_propagation_test, float_saturate_l_mov)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_L, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_L, BRW_CONDITIONAL_L,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
|
@ -1801,7 +1789,10 @@ TEST_F(cmod_propagation_test, float_saturate_ge_cmp)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_GE, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_GE, BRW_CONDITIONAL_GE,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, float_saturate_ge_mov)
|
||||
|
|
@ -1817,7 +1808,10 @@ TEST_F(cmod_propagation_test, float_saturate_ge_mov)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_float_saturate_prop(BRW_CONDITIONAL_GE, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_GE, BRW_CONDITIONAL_GE,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_F, BRW_REGISTER_TYPE_F,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_nz_cmp)
|
||||
|
|
@ -1830,7 +1824,10 @@ TEST_F(cmod_propagation_test, int_saturate_nz_cmp)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_NZ, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_NZ, BRW_CONDITIONAL_NZ,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_nz_mov)
|
||||
|
|
@ -1843,7 +1840,10 @@ TEST_F(cmod_propagation_test, int_saturate_nz_mov)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_NZ, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_NZ, BRW_CONDITIONAL_NZ,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_z_cmp)
|
||||
|
|
@ -1856,7 +1856,10 @@ TEST_F(cmod_propagation_test, int_saturate_z_cmp)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_Z, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_Z,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_z_mov)
|
||||
|
|
@ -1872,7 +1875,10 @@ TEST_F(cmod_propagation_test, int_saturate_z_mov)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_Z, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_Z, BRW_CONDITIONAL_Z,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_g_cmp)
|
||||
|
|
@ -1885,7 +1891,10 @@ TEST_F(cmod_propagation_test, int_saturate_g_cmp)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_G, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_g_mov)
|
||||
|
|
@ -1898,7 +1907,10 @@ TEST_F(cmod_propagation_test, int_saturate_g_mov)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_G, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_G, BRW_CONDITIONAL_G,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_le_cmp)
|
||||
|
|
@ -1911,7 +1923,10 @@ TEST_F(cmod_propagation_test, int_saturate_le_cmp)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_LE, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_le_mov)
|
||||
|
|
@ -1924,7 +1939,10 @@ TEST_F(cmod_propagation_test, int_saturate_le_mov)
|
|||
* = After =
|
||||
* No change.
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_LE, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_LE, BRW_CONDITIONAL_LE,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_l_cmp)
|
||||
|
|
@ -1937,7 +1955,10 @@ TEST_F(cmod_propagation_test, int_saturate_l_cmp)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_L, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_L, BRW_CONDITIONAL_L,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_l_mov)
|
||||
|
|
@ -1950,7 +1971,10 @@ TEST_F(cmod_propagation_test, int_saturate_l_mov)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_L, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_L, BRW_CONDITIONAL_L,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_ge_cmp)
|
||||
|
|
@ -1963,7 +1987,10 @@ TEST_F(cmod_propagation_test, int_saturate_ge_cmp)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_GE, BRW_OPCODE_CMP);
|
||||
test_saturate_prop(BRW_CONDITIONAL_GE, BRW_CONDITIONAL_GE,
|
||||
BRW_OPCODE_CMP,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, int_saturate_ge_mov)
|
||||
|
|
@ -1976,7 +2003,10 @@ TEST_F(cmod_propagation_test, int_saturate_ge_mov)
|
|||
* = After =
|
||||
* No change
|
||||
*/
|
||||
test_negative_int_saturate_prop(BRW_CONDITIONAL_GE, BRW_OPCODE_MOV);
|
||||
test_saturate_prop(BRW_CONDITIONAL_GE, BRW_CONDITIONAL_GE,
|
||||
BRW_OPCODE_MOV,
|
||||
BRW_REGISTER_TYPE_D, BRW_REGISTER_TYPE_D,
|
||||
false);
|
||||
}
|
||||
|
||||
TEST_F(cmod_propagation_test, not_to_or)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue