intel/compiler: Emit ROR and ROL instruction
authorSagar Ghuge <sagar.ghuge@intel.com>
Thu, 30 May 2019 21:14:52 +0000 (14:14 -0700)
committerSagar Ghuge <sagar.ghuge@intel.com>
Mon, 1 Jul 2019 17:14:22 +0000 (10:14 -0700)
v2: Reorder patch (Matt Turner)

Signed-off-by: Sagar Ghuge <sagar.ghuge@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/intel/compiler/brw_compiler.c
src/intel/compiler/brw_fs_nir.cpp

index 550b2e7d7566ba9739d4a5bcd12854ce2aef5ca3..aacd9f2aca4b7ec2901713f029b46b2d06d4d286 100644 (file)
@@ -182,6 +182,8 @@ brw_compiler_create(void *mem_ctx, const struct gen_device_info *devinfo)
       nir_options->lower_ffma = devinfo->gen < 6;
       nir_options->lower_flrp32 = devinfo->gen < 6 || devinfo->gen >= 11;
 
+      nir_options->lower_rotate = devinfo->gen < 11;
+
       nir_options->lower_int64_options = int64_options;
       nir_options->lower_doubles_options = fp64_options;
       compiler->glsl_compiler_options[i].NirOptions = nir_options;
index b9d42b6e26e5184054b67b2ade3f1ba4d25a3800..125bdc7203262c679d1202cdeca08eb85946e30a 100644 (file)
@@ -1768,6 +1768,13 @@ fs_visitor::nir_emit_alu(const fs_builder &bld, nir_alu_instr *instr,
       bld.SHR(result, op[0], op[1]);
       break;
 
+   case nir_op_urol:
+      bld.ROL(result, op[0], op[1]);
+      break;
+   case nir_op_uror:
+      bld.ROR(result, op[0], op[1]);
+      break;
+
    case nir_op_pack_half_2x16_split:
       bld.emit(FS_OPCODE_PACK_HALF_2x16_SPLIT, result, op[0], op[1]);
       break;