intel/compiler/fs: Don't generate integer DWord multiply on Gen11
Like CHV et al., Gen11 does not support 32x32 -> 32/64-bit integer multiplies. Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
This commit is contained in:
@@ -382,6 +382,7 @@ static const struct gen_device_info gen_device_info_hsw_gt3 = {
|
|||||||
.has_llc = true, \
|
.has_llc = true, \
|
||||||
.has_sample_with_hiz = false, \
|
.has_sample_with_hiz = false, \
|
||||||
.has_pln = true, \
|
.has_pln = true, \
|
||||||
|
.has_integer_dword_mul = true, \
|
||||||
.has_64bit_types = true, \
|
.has_64bit_types = true, \
|
||||||
.supports_simd16_3src = true, \
|
.supports_simd16_3src = true, \
|
||||||
.has_surface_tile_offset = true, \
|
.has_surface_tile_offset = true, \
|
||||||
@@ -464,6 +465,7 @@ static const struct gen_device_info gen_device_info_bdw_gt3 = {
|
|||||||
static const struct gen_device_info gen_device_info_chv = {
|
static const struct gen_device_info gen_device_info_chv = {
|
||||||
GEN8_FEATURES, .is_cherryview = 1, .gt = 1,
|
GEN8_FEATURES, .is_cherryview = 1, .gt = 1,
|
||||||
.has_llc = false,
|
.has_llc = false,
|
||||||
|
.has_integer_dword_mul = false,
|
||||||
.num_slices = 1,
|
.num_slices = 1,
|
||||||
.num_subslices = { 2, },
|
.num_subslices = { 2, },
|
||||||
.num_thread_per_eu = 7,
|
.num_thread_per_eu = 7,
|
||||||
@@ -514,6 +516,7 @@ static const struct gen_device_info gen_device_info_chv = {
|
|||||||
#define GEN9_LP_FEATURES \
|
#define GEN9_LP_FEATURES \
|
||||||
GEN8_FEATURES, \
|
GEN8_FEATURES, \
|
||||||
GEN9_HW_INFO, \
|
GEN9_HW_INFO, \
|
||||||
|
.has_integer_dword_mul = false, \
|
||||||
.gt = 1, \
|
.gt = 1, \
|
||||||
.has_llc = false, \
|
.has_llc = false, \
|
||||||
.has_sample_with_hiz = true, \
|
.has_sample_with_hiz = true, \
|
||||||
@@ -818,6 +821,7 @@ static const struct gen_device_info gen_device_info_cnl_5x8 = {
|
|||||||
GEN8_FEATURES, \
|
GEN8_FEATURES, \
|
||||||
GEN11_HW_INFO, \
|
GEN11_HW_INFO, \
|
||||||
.has_64bit_types = false, \
|
.has_64bit_types = false, \
|
||||||
|
.has_integer_dword_mul = false, \
|
||||||
.gt = _gt, .num_slices = _slices, .l3_banks = _l3, \
|
.gt = _gt, .num_slices = _slices, .l3_banks = _l3, \
|
||||||
.num_subslices = _subslices
|
.num_subslices = _subslices
|
||||||
|
|
||||||
|
@@ -60,6 +60,7 @@ struct gen_device_info
|
|||||||
|
|
||||||
bool has_pln;
|
bool has_pln;
|
||||||
bool has_64bit_types;
|
bool has_64bit_types;
|
||||||
|
bool has_integer_dword_mul;
|
||||||
bool has_compr4;
|
bool has_compr4;
|
||||||
bool has_surface_tile_offset;
|
bool has_surface_tile_offset;
|
||||||
bool supports_simd16_3src;
|
bool supports_simd16_3src;
|
||||||
|
@@ -3549,11 +3549,7 @@ fs_visitor::lower_integer_multiplication()
|
|||||||
inst->dst.type != BRW_REGISTER_TYPE_UD))
|
inst->dst.type != BRW_REGISTER_TYPE_UD))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
/* Gen8's MUL instruction can do a 32-bit x 32-bit -> 32-bit
|
if (devinfo->has_integer_dword_mul)
|
||||||
* operation directly, but CHV/BXT cannot.
|
|
||||||
*/
|
|
||||||
if (devinfo->gen >= 8 &&
|
|
||||||
!devinfo->is_cherryview && !gen_device_info_is_9lp(devinfo))
|
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (inst->src[1].file == IMM &&
|
if (inst->src[1].file == IMM &&
|
||||||
|
Reference in New Issue
Block a user