diff options
Diffstat (limited to 'src/intel/compiler/brw_fs_builder.h')
-rw-r--r-- | src/intel/compiler/brw_fs_builder.h | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/src/intel/compiler/brw_fs_builder.h b/src/intel/compiler/brw_fs_builder.h index 3fc6e5f2c25..a69e3c6ae80 100644 --- a/src/intel/compiler/brw_fs_builder.h +++ b/src/intel/compiler/brw_fs_builder.h @@ -733,13 +733,26 @@ namespace brw { src_reg fix_3src_operand(const src_reg &src) const { - if (src.file == VGRF || src.file == UNIFORM || src.stride > 1) { + switch (src.file) { + case FIXED_GRF: + /* FINISHME: Could handle scalar region, other stride=1 regions */ + if (src.vstride != BRW_VERTICAL_STRIDE_8 || + src.width != BRW_WIDTH_8 || + src.hstride != BRW_HORIZONTAL_STRIDE_1) + break; + /* fallthrough */ + case ATTR: + case VGRF: + case UNIFORM: + case IMM: return src; - } else { - dst_reg expanded = vgrf(src.type); - MOV(expanded, src); - return expanded; + default: + break; } + + dst_reg expanded = vgrf(src.type); + MOV(expanded, src); + return expanded; } /** |