nir_ssa_dest_init(&tex->instr, &tex->dest, 4, 32, "tex");
        nir_builder_instr_insert(&b, &tex->instr);
 
-       nir_intrinsic_instr *membar = nir_intrinsic_instr_create(b.shader, nir_intrinsic_memory_barrier);
-       nir_builder_instr_insert(&b, &membar->instr);
-
-       nir_intrinsic_instr *bar = nir_intrinsic_instr_create(b.shader, nir_intrinsic_control_barrier);
-       nir_builder_instr_insert(&b, &bar->instr);
+       nir_scoped_barrier(&b, NIR_SCOPE_WORKGROUP, NIR_SCOPE_WORKGROUP,
+                          NIR_MEMORY_ACQ_REL, nir_var_mem_ssbo);
 
        nir_ssa_def *outval = &tex->dest.ssa;
        nir_intrinsic_instr *store = nir_intrinsic_instr_create(b.shader, nir_intrinsic_image_deref_store);
 
        .lower_fpow = true,
        .lower_mul_2x32_64 = true,
        .lower_rotate = true,
+       .use_scoped_barrier = true,
        .max_unroll_iterations = 32,
        .use_interpolated_input_intrinsics = true,
        /* nir_lower_int64() isn't actually called for the LLVM backend, but
        .lower_fpow = true,
        .lower_mul_2x32_64 = true,
        .lower_rotate = true,
+       .use_scoped_barrier = true,
        .max_unroll_iterations = 32,
        .use_interpolated_input_intrinsics = true,
        .lower_int64_options = nir_lower_imul64 |
                                 nir_lower_dsqrt |
                                 nir_lower_drsq |
                                 nir_lower_ddiv,
-       .use_scoped_barrier = true,
 };
 
 bool