196c5ddc4Srjs#include "midgard_nir.h"
296c5ddc4Srjs
396c5ddc4Srjs#include "nir.h"
496c5ddc4Srjs#include "nir_builder.h"
596c5ddc4Srjs#include "nir_search.h"
696c5ddc4Srjs#include "nir_search_helpers.h"
796c5ddc4Srjs
896c5ddc4Srjs/* What follows is NIR algebraic transform code for the following 1
996c5ddc4Srjs * transforms:
1096c5ddc4Srjs *    ('~fadd', ('fadd', 'a', 'b'), 'a') => ('fadd', ('fadd', 'a', 'a'), 'b')
1196c5ddc4Srjs */
1296c5ddc4Srjs
1396c5ddc4Srjs
1496c5ddc4Srjs   static const nir_search_variable search0_0_0 = {
1596c5ddc4Srjs   { nir_search_value_variable, -2 },
1696c5ddc4Srjs   0, /* a */
1796c5ddc4Srjs   false,
1896c5ddc4Srjs   nir_type_invalid,
1996c5ddc4Srjs   NULL,
2096c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
2196c5ddc4Srjs};
2296c5ddc4Srjs
2396c5ddc4Srjsstatic const nir_search_variable search0_0_1 = {
2496c5ddc4Srjs   { nir_search_value_variable, -2 },
2596c5ddc4Srjs   1, /* b */
2696c5ddc4Srjs   false,
2796c5ddc4Srjs   nir_type_invalid,
2896c5ddc4Srjs   NULL,
2996c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
3096c5ddc4Srjs};
3196c5ddc4Srjsstatic const nir_search_expression search0_0 = {
3296c5ddc4Srjs   { nir_search_value_expression, -2 },
3396c5ddc4Srjs   false, false,
3496c5ddc4Srjs   1, 1,
3596c5ddc4Srjs   nir_op_fadd,
3696c5ddc4Srjs   { &search0_0_0.value, &search0_0_1.value },
3796c5ddc4Srjs   NULL,
3896c5ddc4Srjs};
3996c5ddc4Srjs
4096c5ddc4Srjs/* search0_1 -> search0_0_0 in the cache */
4196c5ddc4Srjsstatic const nir_search_expression search0 = {
4296c5ddc4Srjs   { nir_search_value_expression, -2 },
4396c5ddc4Srjs   true, false,
4496c5ddc4Srjs   0, 2,
4596c5ddc4Srjs   nir_op_fadd,
4696c5ddc4Srjs   { &search0_0.value, &search0_0_0.value },
4796c5ddc4Srjs   NULL,
4896c5ddc4Srjs};
4996c5ddc4Srjs
5096c5ddc4Srjs   /* replace0_0_0 -> search0_0_0 in the cache */
5196c5ddc4Srjs
5296c5ddc4Srjs/* replace0_0_1 -> search0_0_0 in the cache */
5396c5ddc4Srjsstatic const nir_search_expression replace0_0 = {
5496c5ddc4Srjs   { nir_search_value_expression, -2 },
5596c5ddc4Srjs   false, false,
5696c5ddc4Srjs   -1, 0,
5796c5ddc4Srjs   nir_op_fadd,
5896c5ddc4Srjs   { &search0_0_0.value, &search0_0_0.value },
5996c5ddc4Srjs   NULL,
6096c5ddc4Srjs};
6196c5ddc4Srjs
6296c5ddc4Srjs/* replace0_1 -> search0_0_1 in the cache */
6396c5ddc4Srjsstatic const nir_search_expression replace0 = {
6496c5ddc4Srjs   { nir_search_value_expression, -2 },
6596c5ddc4Srjs   false, false,
6696c5ddc4Srjs   0, 1,
6796c5ddc4Srjs   nir_op_fadd,
6896c5ddc4Srjs   { &replace0_0.value, &search0_0_1.value },
6996c5ddc4Srjs   NULL,
7096c5ddc4Srjs};
7196c5ddc4Srjs
7296c5ddc4Srjs
7396c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_early_state3_xforms[] = {
7496c5ddc4Srjs  { &search0, &replace0.value, 0 },
7596c5ddc4Srjs};
7696c5ddc4Srjs
7796c5ddc4Srjsstatic const struct per_op_table midgard_nir_lower_algebraic_early_table[nir_num_search_ops] = {
7896c5ddc4Srjs   [nir_op_fadd] = {
7996c5ddc4Srjs      .filter = (uint16_t []) {
8096c5ddc4Srjs         0,
8196c5ddc4Srjs         0,
8296c5ddc4Srjs         1,
8396c5ddc4Srjs         1,
8496c5ddc4Srjs      },
8596c5ddc4Srjs
8696c5ddc4Srjs      .num_filtered_states = 2,
8796c5ddc4Srjs      .table = (uint16_t []) {
8896c5ddc4Srjs
8996c5ddc4Srjs         2,
9096c5ddc4Srjs         3,
9196c5ddc4Srjs         3,
9296c5ddc4Srjs         3,
9396c5ddc4Srjs      },
9496c5ddc4Srjs   },
9596c5ddc4Srjs};
9696c5ddc4Srjs
9796c5ddc4Srjsconst struct transform *midgard_nir_lower_algebraic_early_transforms[] = {
9896c5ddc4Srjs   NULL,
9996c5ddc4Srjs   NULL,
10096c5ddc4Srjs   NULL,
10196c5ddc4Srjs   midgard_nir_lower_algebraic_early_state3_xforms,
10296c5ddc4Srjs};
10396c5ddc4Srjs
10496c5ddc4Srjsconst uint16_t midgard_nir_lower_algebraic_early_transform_counts[] = {
10596c5ddc4Srjs   0,
10696c5ddc4Srjs   0,
10796c5ddc4Srjs   0,
10896c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_early_state3_xforms),
10996c5ddc4Srjs};
11096c5ddc4Srjs
11196c5ddc4Srjsbool
11296c5ddc4Srjsmidgard_nir_lower_algebraic_early(nir_shader *shader)
11396c5ddc4Srjs{
11496c5ddc4Srjs   bool progress = false;
11596c5ddc4Srjs   bool condition_flags[1];
11696c5ddc4Srjs   const nir_shader_compiler_options *options = shader->options;
11796c5ddc4Srjs   const shader_info *info = &shader->info;
11896c5ddc4Srjs   (void) options;
11996c5ddc4Srjs   (void) info;
12096c5ddc4Srjs
12196c5ddc4Srjs   condition_flags[0] = true;
12296c5ddc4Srjs
12396c5ddc4Srjs   nir_foreach_function(function, shader) {
12496c5ddc4Srjs      if (function->impl) {
12596c5ddc4Srjs         progress |= nir_algebraic_impl(function->impl, condition_flags,
12696c5ddc4Srjs                                        midgard_nir_lower_algebraic_early_transforms,
12796c5ddc4Srjs                                        midgard_nir_lower_algebraic_early_transform_counts,
12896c5ddc4Srjs                                        midgard_nir_lower_algebraic_early_table);
12996c5ddc4Srjs      }
13096c5ddc4Srjs   }
13196c5ddc4Srjs
13296c5ddc4Srjs   return progress;
13396c5ddc4Srjs}
13496c5ddc4Srjs
13596c5ddc4Srjs
13696c5ddc4Srjs#include "nir.h"
13796c5ddc4Srjs#include "nir_builder.h"
13896c5ddc4Srjs#include "nir_search.h"
13996c5ddc4Srjs#include "nir_search_helpers.h"
14096c5ddc4Srjs
14196c5ddc4Srjs/* What follows is NIR algebraic transform code for the following 54
14296c5ddc4Srjs * transforms:
14396c5ddc4Srjs *    ('ineg', 'a') => ('isub', 0, 'a')
14496c5ddc4Srjs *    ('fsub', 'a', 'b') => ('fadd', 'a', ('fneg', 'b'))
14596c5ddc4Srjs *    ('b32csel', 'a', 'b@32', 0) => ('iand', 'a', 'b')
14696c5ddc4Srjs *    ('b32csel', 'a', 0, 'b@32') => ('iand', ('inot', 'a'), 'b')
14796c5ddc4Srjs *    ('~fmin', ('fmax', 'a', -1.0), 1.0) => ('fsat_signed_mali', 'a')
14896c5ddc4Srjs *    ('~fmax', ('fmin', 'a', 1.0), -1.0) => ('fsat_signed_mali', 'a')
14996c5ddc4Srjs *    ('fmax', 'a', 0.0) => ('fclamp_pos_mali', 'a')
15096c5ddc4Srjs *    ('ishl', 'a@16', 'b') => ('u2u16', ('ishl', ('u2u32', 'a'), 'b'))
15196c5ddc4Srjs *    ('ishr', 'a@16', 'b') => ('i2i16', ('ishr', ('i2i32', 'a'), 'b'))
15296c5ddc4Srjs *    ('ushr', 'a@16', 'b') => ('u2u16', ('ushr', ('u2u32', 'a'), 'b'))
15396c5ddc4Srjs *    ('ishl', 'a@8', 'b') => ('u2u8', ('u2u16', ('ishl', ('u2u32', ('u2u16', 'a')), 'b')))
15496c5ddc4Srjs *    ('ishr', 'a@8', 'b') => ('i2i8', ('i2i16', ('ishr', ('i2i32', ('i2i16', 'a')), 'b')))
15596c5ddc4Srjs *    ('ushr', 'a@8', 'b') => ('u2u8', ('u2u16', ('ushr', ('u2u32', ('u2u16', 'a')), 'b')))
15696c5ddc4Srjs *    ('fmul', 'a', 2.0) => ('fadd', 'a', 'a')
15796c5ddc4Srjs *    ('ufind_msb', 'a@8') => ('isub', 31, ('uclz', ('u2u32', 'a')))
15896c5ddc4Srjs *    ('ufind_msb', 'a@16') => ('isub', 31, ('uclz', ('u2u32', 'a')))
15996c5ddc4Srjs *    ('ufind_msb', 'a@32') => ('isub', 31, ('uclz', 'a'))
16096c5ddc4Srjs *    ('u2u8', 'a@32') => ('u2u8', ('u2u16', 'a'))
16196c5ddc4Srjs *    ('u2u8', 'a@64') => ('u2u8', ('u2u16', ('u2u32', 'a')))
16296c5ddc4Srjs *    ('u2u16', 'a@64') => ('u2u16', ('u2u32', 'a'))
16396c5ddc4Srjs *    ('u2u32', 'a@8') => ('u2u32', ('u2u16', 'a'))
16496c5ddc4Srjs *    ('u2u64', 'a@8') => ('u2u64', ('u2u32', ('u2u16', 'a')))
16596c5ddc4Srjs *    ('u2u64', 'a@16') => ('u2u64', ('u2u32', 'a'))
16696c5ddc4Srjs *    ('i2i8', 'a@32') => ('i2i8', ('i2i16', 'a'))
16796c5ddc4Srjs *    ('i2i8', 'a@64') => ('i2i8', ('i2i16', ('i2i32', 'a')))
16896c5ddc4Srjs *    ('i2i16', 'a@64') => ('i2i16', ('i2i32', 'a'))
16996c5ddc4Srjs *    ('i2i32', 'a@8') => ('i2i32', ('i2i16', 'a'))
17096c5ddc4Srjs *    ('i2i64', 'a@8') => ('i2i64', ('i2i32', ('i2i16', 'a')))
17196c5ddc4Srjs *    ('i2i64', 'a@16') => ('i2i64', ('i2i32', 'a'))
17296c5ddc4Srjs *    ('f2f16', 'a@64') => ('f2f16', ('f2f32', 'a'))
17396c5ddc4Srjs *    ('f2f64', 'a@16') => ('f2f64', ('f2f32', 'a'))
17496c5ddc4Srjs *    ('i2f16', 'a@64') => ('f2f16', ('f2f32', ('i2f64', 'a')))
17596c5ddc4Srjs *    ('i2f32', 'a@8') => ('i2f32', ('i2i32', ('i2i16', 'a')))
17696c5ddc4Srjs *    ('i2f64', 'a@8') => ('i2f64', ('i2i64', ('i2i32', ('i2i16', 'a'))))
17796c5ddc4Srjs *    ('i2f64', 'a@16') => ('i2f64', ('i2i64', ('i2i32', 'a')))
17896c5ddc4Srjs *    ('u2f16', 'a@64') => ('f2f16', ('f2f32', ('u2f64', 'a')))
17996c5ddc4Srjs *    ('u2f32', 'a@8') => ('u2f32', ('u2u32', ('u2u16', 'a')))
18096c5ddc4Srjs *    ('u2f64', 'a@8') => ('u2f64', ('u2u64', ('u2u32', ('u2u16', 'a'))))
18196c5ddc4Srjs *    ('u2f64', 'a@16') => ('u2f64', ('u2u64', ('u2u32', 'a')))
18296c5ddc4Srjs *    ('f2i8', 'a@32') => ('i2i8', ('i2i16', ('f2i32', 'a')))
18396c5ddc4Srjs *    ('f2i8', 'a@64') => ('i2i8', ('i2i16', ('i2i32', ('f2i64', 'a'))))
18496c5ddc4Srjs *    ('f2i16', 'a@64') => ('i2i16', ('i2i32', ('f2i64', 'a')))
18596c5ddc4Srjs *    ('f2i64', 'a@16') => ('f2i64', ('f2f64', ('f2f32', 'a')))
18696c5ddc4Srjs *    ('f2u8', 'a@32') => ('u2u8', ('u2u16', ('f2u32', 'a')))
18796c5ddc4Srjs *    ('f2u8', 'a@64') => ('u2u8', ('u2u16', ('u2u32', ('f2u64', 'a'))))
18896c5ddc4Srjs *    ('f2u16', 'a@64') => ('u2u16', ('u2u32', ('f2u64', 'a')))
18996c5ddc4Srjs *    ('f2u64', 'a@16') => ('f2u64', ('f2f64', ('f2f32', 'a')))
19096c5ddc4Srjs *    ('fge', 'a', '#b') => ('inot', ('flt', 'a', 'b'))
19196c5ddc4Srjs *    ('fge32', 'a', '#b') => ('inot', ('flt32', 'a', 'b'))
19296c5ddc4Srjs *    ('ige32', 'a', '#b') => ('inot', ('ilt32', 'a', 'b'))
19396c5ddc4Srjs *    ('uge32', 'a', '#b') => ('inot', ('ult32', 'a', 'b'))
19496c5ddc4Srjs *    ('flt32', '#a', 'b') => ('inot', ('fge32', 'a', 'b'))
19596c5ddc4Srjs *    ('ilt32', '#a', 'b') => ('inot', ('ige32', 'a', 'b'))
19696c5ddc4Srjs *    ('ult32', '#a', 'b') => ('inot', ('uge32', 'a', 'b'))
19796c5ddc4Srjs */
19896c5ddc4Srjs
19996c5ddc4Srjs
20096c5ddc4Srjs   static const nir_search_variable search1_0 = {
20196c5ddc4Srjs   { nir_search_value_variable, -1 },
20296c5ddc4Srjs   0, /* a */
20396c5ddc4Srjs   false,
20496c5ddc4Srjs   nir_type_invalid,
20596c5ddc4Srjs   NULL,
20696c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
20796c5ddc4Srjs};
20896c5ddc4Srjsstatic const nir_search_expression search1 = {
20996c5ddc4Srjs   { nir_search_value_expression, -1 },
21096c5ddc4Srjs   false, false,
21196c5ddc4Srjs   -1, 0,
21296c5ddc4Srjs   nir_op_ineg,
21396c5ddc4Srjs   { &search1_0.value },
21496c5ddc4Srjs   NULL,
21596c5ddc4Srjs};
21696c5ddc4Srjs
21796c5ddc4Srjs   static const nir_search_constant replace1_0 = {
21896c5ddc4Srjs   { nir_search_value_constant, -1 },
21996c5ddc4Srjs   nir_type_int, { 0x0 /* 0 */ },
22096c5ddc4Srjs};
22196c5ddc4Srjs
22296c5ddc4Srjs/* replace1_1 -> search1_0 in the cache */
22396c5ddc4Srjsstatic const nir_search_expression replace1 = {
22496c5ddc4Srjs   { nir_search_value_expression, -1 },
22596c5ddc4Srjs   false, false,
22696c5ddc4Srjs   -1, 0,
22796c5ddc4Srjs   nir_op_isub,
22896c5ddc4Srjs   { &replace1_0.value, &search1_0.value },
22996c5ddc4Srjs   NULL,
23096c5ddc4Srjs};
23196c5ddc4Srjs
23296c5ddc4Srjs   static const nir_search_variable search2_0 = {
23396c5ddc4Srjs   { nir_search_value_variable, -2 },
23496c5ddc4Srjs   0, /* a */
23596c5ddc4Srjs   false,
23696c5ddc4Srjs   nir_type_invalid,
23796c5ddc4Srjs   NULL,
23896c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
23996c5ddc4Srjs};
24096c5ddc4Srjs
24196c5ddc4Srjsstatic const nir_search_variable search2_1 = {
24296c5ddc4Srjs   { nir_search_value_variable, -2 },
24396c5ddc4Srjs   1, /* b */
24496c5ddc4Srjs   false,
24596c5ddc4Srjs   nir_type_invalid,
24696c5ddc4Srjs   NULL,
24796c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
24896c5ddc4Srjs};
24996c5ddc4Srjsstatic const nir_search_expression search2 = {
25096c5ddc4Srjs   { nir_search_value_expression, -2 },
25196c5ddc4Srjs   false, false,
25296c5ddc4Srjs   -1, 0,
25396c5ddc4Srjs   nir_op_fsub,
25496c5ddc4Srjs   { &search2_0.value, &search2_1.value },
25596c5ddc4Srjs   NULL,
25696c5ddc4Srjs};
25796c5ddc4Srjs
25896c5ddc4Srjs   /* replace2_0 -> search2_0 in the cache */
25996c5ddc4Srjs
26096c5ddc4Srjs/* replace2_1_0 -> search2_1 in the cache */
26196c5ddc4Srjsstatic const nir_search_expression replace2_1 = {
26296c5ddc4Srjs   { nir_search_value_expression, -2 },
26396c5ddc4Srjs   false, false,
26496c5ddc4Srjs   -1, 0,
26596c5ddc4Srjs   nir_op_fneg,
26696c5ddc4Srjs   { &search2_1.value },
26796c5ddc4Srjs   NULL,
26896c5ddc4Srjs};
26996c5ddc4Srjsstatic const nir_search_expression replace2 = {
27096c5ddc4Srjs   { nir_search_value_expression, -2 },
27196c5ddc4Srjs   false, false,
27296c5ddc4Srjs   0, 1,
27396c5ddc4Srjs   nir_op_fadd,
27496c5ddc4Srjs   { &search2_0.value, &replace2_1.value },
27596c5ddc4Srjs   NULL,
27696c5ddc4Srjs};
27796c5ddc4Srjs
27896c5ddc4Srjs   static const nir_search_variable search3_0 = {
27996c5ddc4Srjs   { nir_search_value_variable, 32 },
28096c5ddc4Srjs   0, /* a */
28196c5ddc4Srjs   false,
28296c5ddc4Srjs   nir_type_invalid,
28396c5ddc4Srjs   NULL,
28496c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
28596c5ddc4Srjs};
28696c5ddc4Srjs
28796c5ddc4Srjsstatic const nir_search_variable search3_1 = {
28896c5ddc4Srjs   { nir_search_value_variable, 32 },
28996c5ddc4Srjs   1, /* b */
29096c5ddc4Srjs   false,
29196c5ddc4Srjs   nir_type_invalid,
29296c5ddc4Srjs   NULL,
29396c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
29496c5ddc4Srjs};
29596c5ddc4Srjs
29696c5ddc4Srjsstatic const nir_search_constant search3_2 = {
29796c5ddc4Srjs   { nir_search_value_constant, 32 },
29896c5ddc4Srjs   nir_type_int, { 0x0 /* 0 */ },
29996c5ddc4Srjs};
30096c5ddc4Srjsstatic const nir_search_expression search3 = {
30196c5ddc4Srjs   { nir_search_value_expression, 32 },
30296c5ddc4Srjs   false, false,
30396c5ddc4Srjs   -1, 0,
30496c5ddc4Srjs   nir_op_b32csel,
30596c5ddc4Srjs   { &search3_0.value, &search3_1.value, &search3_2.value },
30696c5ddc4Srjs   NULL,
30796c5ddc4Srjs};
30896c5ddc4Srjs
30996c5ddc4Srjs   /* replace3_0 -> search3_0 in the cache */
31096c5ddc4Srjs
31196c5ddc4Srjs/* replace3_1 -> search3_1 in the cache */
31296c5ddc4Srjsstatic const nir_search_expression replace3 = {
31396c5ddc4Srjs   { nir_search_value_expression, 32 },
31496c5ddc4Srjs   false, false,
31596c5ddc4Srjs   0, 1,
31696c5ddc4Srjs   nir_op_iand,
31796c5ddc4Srjs   { &search3_0.value, &search3_1.value },
31896c5ddc4Srjs   NULL,
31996c5ddc4Srjs};
32096c5ddc4Srjs
32196c5ddc4Srjs   /* search4_0 -> search3_0 in the cache */
32296c5ddc4Srjs
32396c5ddc4Srjs/* search4_1 -> search3_2 in the cache */
32496c5ddc4Srjs
32596c5ddc4Srjs/* search4_2 -> search3_1 in the cache */
32696c5ddc4Srjsstatic const nir_search_expression search4 = {
32796c5ddc4Srjs   { nir_search_value_expression, 32 },
32896c5ddc4Srjs   false, false,
32996c5ddc4Srjs   -1, 0,
33096c5ddc4Srjs   nir_op_b32csel,
33196c5ddc4Srjs   { &search3_0.value, &search3_2.value, &search3_1.value },
33296c5ddc4Srjs   NULL,
33396c5ddc4Srjs};
33496c5ddc4Srjs
33596c5ddc4Srjs   /* replace4_0_0 -> search3_0 in the cache */
33696c5ddc4Srjsstatic const nir_search_expression replace4_0 = {
33796c5ddc4Srjs   { nir_search_value_expression, 32 },
33896c5ddc4Srjs   false, false,
33996c5ddc4Srjs   -1, 0,
34096c5ddc4Srjs   nir_op_inot,
34196c5ddc4Srjs   { &search3_0.value },
34296c5ddc4Srjs   NULL,
34396c5ddc4Srjs};
34496c5ddc4Srjs
34596c5ddc4Srjs/* replace4_1 -> search3_1 in the cache */
34696c5ddc4Srjsstatic const nir_search_expression replace4 = {
34796c5ddc4Srjs   { nir_search_value_expression, 32 },
34896c5ddc4Srjs   false, false,
34996c5ddc4Srjs   0, 1,
35096c5ddc4Srjs   nir_op_iand,
35196c5ddc4Srjs   { &replace4_0.value, &search3_1.value },
35296c5ddc4Srjs   NULL,
35396c5ddc4Srjs};
35496c5ddc4Srjs
35596c5ddc4Srjs   /* search5_0_0 -> search1_0 in the cache */
35696c5ddc4Srjs
35796c5ddc4Srjsstatic const nir_search_constant search5_0_1 = {
35896c5ddc4Srjs   { nir_search_value_constant, -1 },
35996c5ddc4Srjs   nir_type_float, { 0xbff0000000000000 /* -1.0 */ },
36096c5ddc4Srjs};
36196c5ddc4Srjsstatic const nir_search_expression search5_0 = {
36296c5ddc4Srjs   { nir_search_value_expression, -1 },
36396c5ddc4Srjs   false, false,
36496c5ddc4Srjs   1, 1,
36596c5ddc4Srjs   nir_op_fmax,
36696c5ddc4Srjs   { &search1_0.value, &search5_0_1.value },
36796c5ddc4Srjs   NULL,
36896c5ddc4Srjs};
36996c5ddc4Srjs
37096c5ddc4Srjsstatic const nir_search_constant search5_1 = {
37196c5ddc4Srjs   { nir_search_value_constant, -1 },
37296c5ddc4Srjs   nir_type_float, { 0x3ff0000000000000 /* 1.0 */ },
37396c5ddc4Srjs};
37496c5ddc4Srjsstatic const nir_search_expression search5 = {
37596c5ddc4Srjs   { nir_search_value_expression, -1 },
37696c5ddc4Srjs   true, false,
37796c5ddc4Srjs   0, 2,
37896c5ddc4Srjs   nir_op_fmin,
37996c5ddc4Srjs   { &search5_0.value, &search5_1.value },
38096c5ddc4Srjs   NULL,
38196c5ddc4Srjs};
38296c5ddc4Srjs
38396c5ddc4Srjs   /* replace5_0 -> search1_0 in the cache */
38496c5ddc4Srjsstatic const nir_search_expression replace5 = {
38596c5ddc4Srjs   { nir_search_value_expression, -1 },
38696c5ddc4Srjs   false, false,
38796c5ddc4Srjs   -1, 0,
38896c5ddc4Srjs   nir_op_fsat_signed_mali,
38996c5ddc4Srjs   { &search1_0.value },
39096c5ddc4Srjs   NULL,
39196c5ddc4Srjs};
39296c5ddc4Srjs
39396c5ddc4Srjs   /* search6_0_0 -> search1_0 in the cache */
39496c5ddc4Srjs
39596c5ddc4Srjs/* search6_0_1 -> search5_1 in the cache */
39696c5ddc4Srjsstatic const nir_search_expression search6_0 = {
39796c5ddc4Srjs   { nir_search_value_expression, -1 },
39896c5ddc4Srjs   false, false,
39996c5ddc4Srjs   1, 1,
40096c5ddc4Srjs   nir_op_fmin,
40196c5ddc4Srjs   { &search1_0.value, &search5_1.value },
40296c5ddc4Srjs   NULL,
40396c5ddc4Srjs};
40496c5ddc4Srjs
40596c5ddc4Srjs/* search6_1 -> search5_0_1 in the cache */
40696c5ddc4Srjsstatic const nir_search_expression search6 = {
40796c5ddc4Srjs   { nir_search_value_expression, -1 },
40896c5ddc4Srjs   true, false,
40996c5ddc4Srjs   0, 2,
41096c5ddc4Srjs   nir_op_fmax,
41196c5ddc4Srjs   { &search6_0.value, &search5_0_1.value },
41296c5ddc4Srjs   NULL,
41396c5ddc4Srjs};
41496c5ddc4Srjs
41596c5ddc4Srjs   /* replace6_0 -> search1_0 in the cache */
41696c5ddc4Srjs/* replace6 -> replace5 in the cache */
41796c5ddc4Srjs
41896c5ddc4Srjs   /* search7_0 -> search1_0 in the cache */
41996c5ddc4Srjs
42096c5ddc4Srjsstatic const nir_search_constant search7_1 = {
42196c5ddc4Srjs   { nir_search_value_constant, -1 },
42296c5ddc4Srjs   nir_type_float, { 0x0 /* 0.0 */ },
42396c5ddc4Srjs};
42496c5ddc4Srjsstatic const nir_search_expression search7 = {
42596c5ddc4Srjs   { nir_search_value_expression, -1 },
42696c5ddc4Srjs   false, false,
42796c5ddc4Srjs   0, 1,
42896c5ddc4Srjs   nir_op_fmax,
42996c5ddc4Srjs   { &search1_0.value, &search7_1.value },
43096c5ddc4Srjs   NULL,
43196c5ddc4Srjs};
43296c5ddc4Srjs
43396c5ddc4Srjs   /* replace7_0 -> search1_0 in the cache */
43496c5ddc4Srjsstatic const nir_search_expression replace7 = {
43596c5ddc4Srjs   { nir_search_value_expression, -1 },
43696c5ddc4Srjs   false, false,
43796c5ddc4Srjs   -1, 0,
43896c5ddc4Srjs   nir_op_fclamp_pos_mali,
43996c5ddc4Srjs   { &search1_0.value },
44096c5ddc4Srjs   NULL,
44196c5ddc4Srjs};
44296c5ddc4Srjs
44396c5ddc4Srjs   static const nir_search_variable search8_0 = {
44496c5ddc4Srjs   { nir_search_value_variable, 16 },
44596c5ddc4Srjs   0, /* a */
44696c5ddc4Srjs   false,
44796c5ddc4Srjs   nir_type_invalid,
44896c5ddc4Srjs   NULL,
44996c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
45096c5ddc4Srjs};
45196c5ddc4Srjs
45296c5ddc4Srjs/* search8_1 -> search3_1 in the cache */
45396c5ddc4Srjsstatic const nir_search_expression search8 = {
45496c5ddc4Srjs   { nir_search_value_expression, 16 },
45596c5ddc4Srjs   false, false,
45696c5ddc4Srjs   -1, 0,
45796c5ddc4Srjs   nir_op_ishl,
45896c5ddc4Srjs   { &search8_0.value, &search3_1.value },
45996c5ddc4Srjs   NULL,
46096c5ddc4Srjs};
46196c5ddc4Srjs
46296c5ddc4Srjs   /* replace8_0_0_0 -> search8_0 in the cache */
46396c5ddc4Srjsstatic const nir_search_expression replace8_0_0 = {
46496c5ddc4Srjs   { nir_search_value_expression, 32 },
46596c5ddc4Srjs   false, false,
46696c5ddc4Srjs   -1, 0,
46796c5ddc4Srjs   nir_op_u2u32,
46896c5ddc4Srjs   { &search8_0.value },
46996c5ddc4Srjs   NULL,
47096c5ddc4Srjs};
47196c5ddc4Srjs
47296c5ddc4Srjs/* replace8_0_1 -> search3_1 in the cache */
47396c5ddc4Srjsstatic const nir_search_expression replace8_0 = {
47496c5ddc4Srjs   { nir_search_value_expression, 32 },
47596c5ddc4Srjs   false, false,
47696c5ddc4Srjs   -1, 0,
47796c5ddc4Srjs   nir_op_ishl,
47896c5ddc4Srjs   { &replace8_0_0.value, &search3_1.value },
47996c5ddc4Srjs   NULL,
48096c5ddc4Srjs};
48196c5ddc4Srjsstatic const nir_search_expression replace8 = {
48296c5ddc4Srjs   { nir_search_value_expression, 16 },
48396c5ddc4Srjs   false, false,
48496c5ddc4Srjs   -1, 0,
48596c5ddc4Srjs   nir_op_u2u16,
48696c5ddc4Srjs   { &replace8_0.value },
48796c5ddc4Srjs   NULL,
48896c5ddc4Srjs};
48996c5ddc4Srjs
49096c5ddc4Srjs   /* search9_0 -> search8_0 in the cache */
49196c5ddc4Srjs
49296c5ddc4Srjs/* search9_1 -> search3_1 in the cache */
49396c5ddc4Srjsstatic const nir_search_expression search9 = {
49496c5ddc4Srjs   { nir_search_value_expression, 16 },
49596c5ddc4Srjs   false, false,
49696c5ddc4Srjs   -1, 0,
49796c5ddc4Srjs   nir_op_ishr,
49896c5ddc4Srjs   { &search8_0.value, &search3_1.value },
49996c5ddc4Srjs   NULL,
50096c5ddc4Srjs};
50196c5ddc4Srjs
50296c5ddc4Srjs   /* replace9_0_0_0 -> search8_0 in the cache */
50396c5ddc4Srjsstatic const nir_search_expression replace9_0_0 = {
50496c5ddc4Srjs   { nir_search_value_expression, 32 },
50596c5ddc4Srjs   false, false,
50696c5ddc4Srjs   -1, 0,
50796c5ddc4Srjs   nir_op_i2i32,
50896c5ddc4Srjs   { &search8_0.value },
50996c5ddc4Srjs   NULL,
51096c5ddc4Srjs};
51196c5ddc4Srjs
51296c5ddc4Srjs/* replace9_0_1 -> search3_1 in the cache */
51396c5ddc4Srjsstatic const nir_search_expression replace9_0 = {
51496c5ddc4Srjs   { nir_search_value_expression, 32 },
51596c5ddc4Srjs   false, false,
51696c5ddc4Srjs   -1, 0,
51796c5ddc4Srjs   nir_op_ishr,
51896c5ddc4Srjs   { &replace9_0_0.value, &search3_1.value },
51996c5ddc4Srjs   NULL,
52096c5ddc4Srjs};
52196c5ddc4Srjsstatic const nir_search_expression replace9 = {
52296c5ddc4Srjs   { nir_search_value_expression, 16 },
52396c5ddc4Srjs   false, false,
52496c5ddc4Srjs   -1, 0,
52596c5ddc4Srjs   nir_op_i2i16,
52696c5ddc4Srjs   { &replace9_0.value },
52796c5ddc4Srjs   NULL,
52896c5ddc4Srjs};
52996c5ddc4Srjs
53096c5ddc4Srjs   /* search10_0 -> search8_0 in the cache */
53196c5ddc4Srjs
53296c5ddc4Srjs/* search10_1 -> search3_1 in the cache */
53396c5ddc4Srjsstatic const nir_search_expression search10 = {
53496c5ddc4Srjs   { nir_search_value_expression, 16 },
53596c5ddc4Srjs   false, false,
53696c5ddc4Srjs   -1, 0,
53796c5ddc4Srjs   nir_op_ushr,
53896c5ddc4Srjs   { &search8_0.value, &search3_1.value },
53996c5ddc4Srjs   NULL,
54096c5ddc4Srjs};
54196c5ddc4Srjs
54296c5ddc4Srjs   /* replace10_0_0_0 -> search8_0 in the cache */
54396c5ddc4Srjs/* replace10_0_0 -> replace8_0_0 in the cache */
54496c5ddc4Srjs
54596c5ddc4Srjs/* replace10_0_1 -> search3_1 in the cache */
54696c5ddc4Srjsstatic const nir_search_expression replace10_0 = {
54796c5ddc4Srjs   { nir_search_value_expression, 32 },
54896c5ddc4Srjs   false, false,
54996c5ddc4Srjs   -1, 0,
55096c5ddc4Srjs   nir_op_ushr,
55196c5ddc4Srjs   { &replace8_0_0.value, &search3_1.value },
55296c5ddc4Srjs   NULL,
55396c5ddc4Srjs};
55496c5ddc4Srjsstatic const nir_search_expression replace10 = {
55596c5ddc4Srjs   { nir_search_value_expression, 16 },
55696c5ddc4Srjs   false, false,
55796c5ddc4Srjs   -1, 0,
55896c5ddc4Srjs   nir_op_u2u16,
55996c5ddc4Srjs   { &replace10_0.value },
56096c5ddc4Srjs   NULL,
56196c5ddc4Srjs};
56296c5ddc4Srjs
56396c5ddc4Srjs   static const nir_search_variable search11_0 = {
56496c5ddc4Srjs   { nir_search_value_variable, 8 },
56596c5ddc4Srjs   0, /* a */
56696c5ddc4Srjs   false,
56796c5ddc4Srjs   nir_type_invalid,
56896c5ddc4Srjs   NULL,
56996c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
57096c5ddc4Srjs};
57196c5ddc4Srjs
57296c5ddc4Srjs/* search11_1 -> search3_1 in the cache */
57396c5ddc4Srjsstatic const nir_search_expression search11 = {
57496c5ddc4Srjs   { nir_search_value_expression, 8 },
57596c5ddc4Srjs   false, false,
57696c5ddc4Srjs   -1, 0,
57796c5ddc4Srjs   nir_op_ishl,
57896c5ddc4Srjs   { &search11_0.value, &search3_1.value },
57996c5ddc4Srjs   NULL,
58096c5ddc4Srjs};
58196c5ddc4Srjs
58296c5ddc4Srjs   /* replace11_0_0_0_0_0 -> search11_0 in the cache */
58396c5ddc4Srjsstatic const nir_search_expression replace11_0_0_0_0 = {
58496c5ddc4Srjs   { nir_search_value_expression, 16 },
58596c5ddc4Srjs   false, false,
58696c5ddc4Srjs   -1, 0,
58796c5ddc4Srjs   nir_op_u2u16,
58896c5ddc4Srjs   { &search11_0.value },
58996c5ddc4Srjs   NULL,
59096c5ddc4Srjs};
59196c5ddc4Srjsstatic const nir_search_expression replace11_0_0_0 = {
59296c5ddc4Srjs   { nir_search_value_expression, 32 },
59396c5ddc4Srjs   false, false,
59496c5ddc4Srjs   -1, 0,
59596c5ddc4Srjs   nir_op_u2u32,
59696c5ddc4Srjs   { &replace11_0_0_0_0.value },
59796c5ddc4Srjs   NULL,
59896c5ddc4Srjs};
59996c5ddc4Srjs
60096c5ddc4Srjs/* replace11_0_0_1 -> search3_1 in the cache */
60196c5ddc4Srjsstatic const nir_search_expression replace11_0_0 = {
60296c5ddc4Srjs   { nir_search_value_expression, 32 },
60396c5ddc4Srjs   false, false,
60496c5ddc4Srjs   -1, 0,
60596c5ddc4Srjs   nir_op_ishl,
60696c5ddc4Srjs   { &replace11_0_0_0.value, &search3_1.value },
60796c5ddc4Srjs   NULL,
60896c5ddc4Srjs};
60996c5ddc4Srjsstatic const nir_search_expression replace11_0 = {
61096c5ddc4Srjs   { nir_search_value_expression, 16 },
61196c5ddc4Srjs   false, false,
61296c5ddc4Srjs   -1, 0,
61396c5ddc4Srjs   nir_op_u2u16,
61496c5ddc4Srjs   { &replace11_0_0.value },
61596c5ddc4Srjs   NULL,
61696c5ddc4Srjs};
61796c5ddc4Srjsstatic const nir_search_expression replace11 = {
61896c5ddc4Srjs   { nir_search_value_expression, 8 },
61996c5ddc4Srjs   false, false,
62096c5ddc4Srjs   -1, 0,
62196c5ddc4Srjs   nir_op_u2u8,
62296c5ddc4Srjs   { &replace11_0.value },
62396c5ddc4Srjs   NULL,
62496c5ddc4Srjs};
62596c5ddc4Srjs
62696c5ddc4Srjs   /* search12_0 -> search11_0 in the cache */
62796c5ddc4Srjs
62896c5ddc4Srjs/* search12_1 -> search3_1 in the cache */
62996c5ddc4Srjsstatic const nir_search_expression search12 = {
63096c5ddc4Srjs   { nir_search_value_expression, 8 },
63196c5ddc4Srjs   false, false,
63296c5ddc4Srjs   -1, 0,
63396c5ddc4Srjs   nir_op_ishr,
63496c5ddc4Srjs   { &search11_0.value, &search3_1.value },
63596c5ddc4Srjs   NULL,
63696c5ddc4Srjs};
63796c5ddc4Srjs
63896c5ddc4Srjs   /* replace12_0_0_0_0_0 -> search11_0 in the cache */
63996c5ddc4Srjsstatic const nir_search_expression replace12_0_0_0_0 = {
64096c5ddc4Srjs   { nir_search_value_expression, 16 },
64196c5ddc4Srjs   false, false,
64296c5ddc4Srjs   -1, 0,
64396c5ddc4Srjs   nir_op_i2i16,
64496c5ddc4Srjs   { &search11_0.value },
64596c5ddc4Srjs   NULL,
64696c5ddc4Srjs};
64796c5ddc4Srjsstatic const nir_search_expression replace12_0_0_0 = {
64896c5ddc4Srjs   { nir_search_value_expression, 32 },
64996c5ddc4Srjs   false, false,
65096c5ddc4Srjs   -1, 0,
65196c5ddc4Srjs   nir_op_i2i32,
65296c5ddc4Srjs   { &replace12_0_0_0_0.value },
65396c5ddc4Srjs   NULL,
65496c5ddc4Srjs};
65596c5ddc4Srjs
65696c5ddc4Srjs/* replace12_0_0_1 -> search3_1 in the cache */
65796c5ddc4Srjsstatic const nir_search_expression replace12_0_0 = {
65896c5ddc4Srjs   { nir_search_value_expression, 32 },
65996c5ddc4Srjs   false, false,
66096c5ddc4Srjs   -1, 0,
66196c5ddc4Srjs   nir_op_ishr,
66296c5ddc4Srjs   { &replace12_0_0_0.value, &search3_1.value },
66396c5ddc4Srjs   NULL,
66496c5ddc4Srjs};
66596c5ddc4Srjsstatic const nir_search_expression replace12_0 = {
66696c5ddc4Srjs   { nir_search_value_expression, 16 },
66796c5ddc4Srjs   false, false,
66896c5ddc4Srjs   -1, 0,
66996c5ddc4Srjs   nir_op_i2i16,
67096c5ddc4Srjs   { &replace12_0_0.value },
67196c5ddc4Srjs   NULL,
67296c5ddc4Srjs};
67396c5ddc4Srjsstatic const nir_search_expression replace12 = {
67496c5ddc4Srjs   { nir_search_value_expression, 8 },
67596c5ddc4Srjs   false, false,
67696c5ddc4Srjs   -1, 0,
67796c5ddc4Srjs   nir_op_i2i8,
67896c5ddc4Srjs   { &replace12_0.value },
67996c5ddc4Srjs   NULL,
68096c5ddc4Srjs};
68196c5ddc4Srjs
68296c5ddc4Srjs   /* search13_0 -> search11_0 in the cache */
68396c5ddc4Srjs
68496c5ddc4Srjs/* search13_1 -> search3_1 in the cache */
68596c5ddc4Srjsstatic const nir_search_expression search13 = {
68696c5ddc4Srjs   { nir_search_value_expression, 8 },
68796c5ddc4Srjs   false, false,
68896c5ddc4Srjs   -1, 0,
68996c5ddc4Srjs   nir_op_ushr,
69096c5ddc4Srjs   { &search11_0.value, &search3_1.value },
69196c5ddc4Srjs   NULL,
69296c5ddc4Srjs};
69396c5ddc4Srjs
69496c5ddc4Srjs   /* replace13_0_0_0_0_0 -> search11_0 in the cache */
69596c5ddc4Srjs/* replace13_0_0_0_0 -> replace11_0_0_0_0 in the cache */
69696c5ddc4Srjs/* replace13_0_0_0 -> replace11_0_0_0 in the cache */
69796c5ddc4Srjs
69896c5ddc4Srjs/* replace13_0_0_1 -> search3_1 in the cache */
69996c5ddc4Srjsstatic const nir_search_expression replace13_0_0 = {
70096c5ddc4Srjs   { nir_search_value_expression, 32 },
70196c5ddc4Srjs   false, false,
70296c5ddc4Srjs   -1, 0,
70396c5ddc4Srjs   nir_op_ushr,
70496c5ddc4Srjs   { &replace11_0_0_0.value, &search3_1.value },
70596c5ddc4Srjs   NULL,
70696c5ddc4Srjs};
70796c5ddc4Srjsstatic const nir_search_expression replace13_0 = {
70896c5ddc4Srjs   { nir_search_value_expression, 16 },
70996c5ddc4Srjs   false, false,
71096c5ddc4Srjs   -1, 0,
71196c5ddc4Srjs   nir_op_u2u16,
71296c5ddc4Srjs   { &replace13_0_0.value },
71396c5ddc4Srjs   NULL,
71496c5ddc4Srjs};
71596c5ddc4Srjsstatic const nir_search_expression replace13 = {
71696c5ddc4Srjs   { nir_search_value_expression, 8 },
71796c5ddc4Srjs   false, false,
71896c5ddc4Srjs   -1, 0,
71996c5ddc4Srjs   nir_op_u2u8,
72096c5ddc4Srjs   { &replace13_0.value },
72196c5ddc4Srjs   NULL,
72296c5ddc4Srjs};
72396c5ddc4Srjs
72496c5ddc4Srjs   /* search14_0 -> search1_0 in the cache */
72596c5ddc4Srjs
72696c5ddc4Srjsstatic const nir_search_constant search14_1 = {
72796c5ddc4Srjs   { nir_search_value_constant, -1 },
72896c5ddc4Srjs   nir_type_float, { 0x4000000000000000 /* 2.0 */ },
72996c5ddc4Srjs};
73096c5ddc4Srjsstatic const nir_search_expression search14 = {
73196c5ddc4Srjs   { nir_search_value_expression, -1 },
73296c5ddc4Srjs   false, false,
73396c5ddc4Srjs   0, 1,
73496c5ddc4Srjs   nir_op_fmul,
73596c5ddc4Srjs   { &search1_0.value, &search14_1.value },
73696c5ddc4Srjs   NULL,
73796c5ddc4Srjs};
73896c5ddc4Srjs
73996c5ddc4Srjs   /* replace14_0 -> search1_0 in the cache */
74096c5ddc4Srjs
74196c5ddc4Srjs/* replace14_1 -> search1_0 in the cache */
74296c5ddc4Srjsstatic const nir_search_expression replace14 = {
74396c5ddc4Srjs   { nir_search_value_expression, -1 },
74496c5ddc4Srjs   false, false,
74596c5ddc4Srjs   -1, 0,
74696c5ddc4Srjs   nir_op_fadd,
74796c5ddc4Srjs   { &search1_0.value, &search1_0.value },
74896c5ddc4Srjs   NULL,
74996c5ddc4Srjs};
75096c5ddc4Srjs
75196c5ddc4Srjs   /* search15_0 -> search11_0 in the cache */
75296c5ddc4Srjsstatic const nir_search_expression search15 = {
75396c5ddc4Srjs   { nir_search_value_expression, 32 },
75496c5ddc4Srjs   false, false,
75596c5ddc4Srjs   -1, 0,
75696c5ddc4Srjs   nir_op_ufind_msb,
75796c5ddc4Srjs   { &search11_0.value },
75896c5ddc4Srjs   NULL,
75996c5ddc4Srjs};
76096c5ddc4Srjs
76196c5ddc4Srjs   static const nir_search_constant replace15_0 = {
76296c5ddc4Srjs   { nir_search_value_constant, 32 },
76396c5ddc4Srjs   nir_type_int, { 0x1f /* 31 */ },
76496c5ddc4Srjs};
76596c5ddc4Srjs
76696c5ddc4Srjs/* replace15_1_0_0 -> search11_0 in the cache */
76796c5ddc4Srjsstatic const nir_search_expression replace15_1_0 = {
76896c5ddc4Srjs   { nir_search_value_expression, 32 },
76996c5ddc4Srjs   false, false,
77096c5ddc4Srjs   -1, 0,
77196c5ddc4Srjs   nir_op_u2u32,
77296c5ddc4Srjs   { &search11_0.value },
77396c5ddc4Srjs   NULL,
77496c5ddc4Srjs};
77596c5ddc4Srjsstatic const nir_search_expression replace15_1 = {
77696c5ddc4Srjs   { nir_search_value_expression, 32 },
77796c5ddc4Srjs   false, false,
77896c5ddc4Srjs   -1, 0,
77996c5ddc4Srjs   nir_op_uclz,
78096c5ddc4Srjs   { &replace15_1_0.value },
78196c5ddc4Srjs   NULL,
78296c5ddc4Srjs};
78396c5ddc4Srjsstatic const nir_search_expression replace15 = {
78496c5ddc4Srjs   { nir_search_value_expression, 32 },
78596c5ddc4Srjs   false, false,
78696c5ddc4Srjs   -1, 0,
78796c5ddc4Srjs   nir_op_isub,
78896c5ddc4Srjs   { &replace15_0.value, &replace15_1.value },
78996c5ddc4Srjs   NULL,
79096c5ddc4Srjs};
79196c5ddc4Srjs
79296c5ddc4Srjs   /* search16_0 -> search8_0 in the cache */
79396c5ddc4Srjsstatic const nir_search_expression search16 = {
79496c5ddc4Srjs   { nir_search_value_expression, 32 },
79596c5ddc4Srjs   false, false,
79696c5ddc4Srjs   -1, 0,
79796c5ddc4Srjs   nir_op_ufind_msb,
79896c5ddc4Srjs   { &search8_0.value },
79996c5ddc4Srjs   NULL,
80096c5ddc4Srjs};
80196c5ddc4Srjs
80296c5ddc4Srjs   /* replace16_0 -> replace15_0 in the cache */
80396c5ddc4Srjs
80496c5ddc4Srjs/* replace16_1_0_0 -> search8_0 in the cache */
80596c5ddc4Srjs/* replace16_1_0 -> replace8_0_0 in the cache */
80696c5ddc4Srjsstatic const nir_search_expression replace16_1 = {
80796c5ddc4Srjs   { nir_search_value_expression, 32 },
80896c5ddc4Srjs   false, false,
80996c5ddc4Srjs   -1, 0,
81096c5ddc4Srjs   nir_op_uclz,
81196c5ddc4Srjs   { &replace8_0_0.value },
81296c5ddc4Srjs   NULL,
81396c5ddc4Srjs};
81496c5ddc4Srjsstatic const nir_search_expression replace16 = {
81596c5ddc4Srjs   { nir_search_value_expression, 32 },
81696c5ddc4Srjs   false, false,
81796c5ddc4Srjs   -1, 0,
81896c5ddc4Srjs   nir_op_isub,
81996c5ddc4Srjs   { &replace15_0.value, &replace16_1.value },
82096c5ddc4Srjs   NULL,
82196c5ddc4Srjs};
82296c5ddc4Srjs
82396c5ddc4Srjs   /* search17_0 -> search3_0 in the cache */
82496c5ddc4Srjsstatic const nir_search_expression search17 = {
82596c5ddc4Srjs   { nir_search_value_expression, 32 },
82696c5ddc4Srjs   false, false,
82796c5ddc4Srjs   -1, 0,
82896c5ddc4Srjs   nir_op_ufind_msb,
82996c5ddc4Srjs   { &search3_0.value },
83096c5ddc4Srjs   NULL,
83196c5ddc4Srjs};
83296c5ddc4Srjs
83396c5ddc4Srjs   /* replace17_0 -> replace15_0 in the cache */
83496c5ddc4Srjs
83596c5ddc4Srjs/* replace17_1_0 -> search3_0 in the cache */
83696c5ddc4Srjsstatic const nir_search_expression replace17_1 = {
83796c5ddc4Srjs   { nir_search_value_expression, 32 },
83896c5ddc4Srjs   false, false,
83996c5ddc4Srjs   -1, 0,
84096c5ddc4Srjs   nir_op_uclz,
84196c5ddc4Srjs   { &search3_0.value },
84296c5ddc4Srjs   NULL,
84396c5ddc4Srjs};
84496c5ddc4Srjsstatic const nir_search_expression replace17 = {
84596c5ddc4Srjs   { nir_search_value_expression, 32 },
84696c5ddc4Srjs   false, false,
84796c5ddc4Srjs   -1, 0,
84896c5ddc4Srjs   nir_op_isub,
84996c5ddc4Srjs   { &replace15_0.value, &replace17_1.value },
85096c5ddc4Srjs   NULL,
85196c5ddc4Srjs};
85296c5ddc4Srjs
85396c5ddc4Srjs   /* search18_0 -> search3_0 in the cache */
85496c5ddc4Srjsstatic const nir_search_expression search18 = {
85596c5ddc4Srjs   { nir_search_value_expression, 8 },
85696c5ddc4Srjs   false, false,
85796c5ddc4Srjs   -1, 0,
85896c5ddc4Srjs   nir_op_u2u8,
85996c5ddc4Srjs   { &search3_0.value },
86096c5ddc4Srjs   NULL,
86196c5ddc4Srjs};
86296c5ddc4Srjs
86396c5ddc4Srjs   /* replace18_0_0 -> search3_0 in the cache */
86496c5ddc4Srjsstatic const nir_search_expression replace18_0 = {
86596c5ddc4Srjs   { nir_search_value_expression, 16 },
86696c5ddc4Srjs   false, false,
86796c5ddc4Srjs   -1, 0,
86896c5ddc4Srjs   nir_op_u2u16,
86996c5ddc4Srjs   { &search3_0.value },
87096c5ddc4Srjs   NULL,
87196c5ddc4Srjs};
87296c5ddc4Srjsstatic const nir_search_expression replace18 = {
87396c5ddc4Srjs   { nir_search_value_expression, 8 },
87496c5ddc4Srjs   false, false,
87596c5ddc4Srjs   -1, 0,
87696c5ddc4Srjs   nir_op_u2u8,
87796c5ddc4Srjs   { &replace18_0.value },
87896c5ddc4Srjs   NULL,
87996c5ddc4Srjs};
88096c5ddc4Srjs
88196c5ddc4Srjs   static const nir_search_variable search19_0 = {
88296c5ddc4Srjs   { nir_search_value_variable, 64 },
88396c5ddc4Srjs   0, /* a */
88496c5ddc4Srjs   false,
88596c5ddc4Srjs   nir_type_invalid,
88696c5ddc4Srjs   NULL,
88796c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
88896c5ddc4Srjs};
88996c5ddc4Srjsstatic const nir_search_expression search19 = {
89096c5ddc4Srjs   { nir_search_value_expression, 8 },
89196c5ddc4Srjs   false, false,
89296c5ddc4Srjs   -1, 0,
89396c5ddc4Srjs   nir_op_u2u8,
89496c5ddc4Srjs   { &search19_0.value },
89596c5ddc4Srjs   NULL,
89696c5ddc4Srjs};
89796c5ddc4Srjs
89896c5ddc4Srjs   /* replace19_0_0_0 -> search19_0 in the cache */
89996c5ddc4Srjsstatic const nir_search_expression replace19_0_0 = {
90096c5ddc4Srjs   { nir_search_value_expression, 32 },
90196c5ddc4Srjs   false, false,
90296c5ddc4Srjs   -1, 0,
90396c5ddc4Srjs   nir_op_u2u32,
90496c5ddc4Srjs   { &search19_0.value },
90596c5ddc4Srjs   NULL,
90696c5ddc4Srjs};
90796c5ddc4Srjsstatic const nir_search_expression replace19_0 = {
90896c5ddc4Srjs   { nir_search_value_expression, 16 },
90996c5ddc4Srjs   false, false,
91096c5ddc4Srjs   -1, 0,
91196c5ddc4Srjs   nir_op_u2u16,
91296c5ddc4Srjs   { &replace19_0_0.value },
91396c5ddc4Srjs   NULL,
91496c5ddc4Srjs};
91596c5ddc4Srjsstatic const nir_search_expression replace19 = {
91696c5ddc4Srjs   { nir_search_value_expression, 8 },
91796c5ddc4Srjs   false, false,
91896c5ddc4Srjs   -1, 0,
91996c5ddc4Srjs   nir_op_u2u8,
92096c5ddc4Srjs   { &replace19_0.value },
92196c5ddc4Srjs   NULL,
92296c5ddc4Srjs};
92396c5ddc4Srjs
92496c5ddc4Srjs   /* search20_0 -> search19_0 in the cache */
92596c5ddc4Srjsstatic const nir_search_expression search20 = {
92696c5ddc4Srjs   { nir_search_value_expression, 16 },
92796c5ddc4Srjs   false, false,
92896c5ddc4Srjs   -1, 0,
92996c5ddc4Srjs   nir_op_u2u16,
93096c5ddc4Srjs   { &search19_0.value },
93196c5ddc4Srjs   NULL,
93296c5ddc4Srjs};
93396c5ddc4Srjs
93496c5ddc4Srjs   /* replace20_0_0 -> search19_0 in the cache */
93596c5ddc4Srjs/* replace20_0 -> replace19_0_0 in the cache */
93696c5ddc4Srjs/* replace20 -> replace19_0 in the cache */
93796c5ddc4Srjs
93896c5ddc4Srjs   /* search21_0 -> search11_0 in the cache */
93996c5ddc4Srjs/* search21 -> replace15_1_0 in the cache */
94096c5ddc4Srjs
94196c5ddc4Srjs   /* replace21_0_0 -> search11_0 in the cache */
94296c5ddc4Srjs/* replace21_0 -> replace11_0_0_0_0 in the cache */
94396c5ddc4Srjs/* replace21 -> replace11_0_0_0 in the cache */
94496c5ddc4Srjs
94596c5ddc4Srjs   /* search22_0 -> search11_0 in the cache */
94696c5ddc4Srjsstatic const nir_search_expression search22 = {
94796c5ddc4Srjs   { nir_search_value_expression, 64 },
94896c5ddc4Srjs   false, false,
94996c5ddc4Srjs   -1, 0,
95096c5ddc4Srjs   nir_op_u2u64,
95196c5ddc4Srjs   { &search11_0.value },
95296c5ddc4Srjs   NULL,
95396c5ddc4Srjs};
95496c5ddc4Srjs
95596c5ddc4Srjs   /* replace22_0_0_0 -> search11_0 in the cache */
95696c5ddc4Srjs/* replace22_0_0 -> replace11_0_0_0_0 in the cache */
95796c5ddc4Srjs/* replace22_0 -> replace11_0_0_0 in the cache */
95896c5ddc4Srjsstatic const nir_search_expression replace22 = {
95996c5ddc4Srjs   { nir_search_value_expression, 64 },
96096c5ddc4Srjs   false, false,
96196c5ddc4Srjs   -1, 0,
96296c5ddc4Srjs   nir_op_u2u64,
96396c5ddc4Srjs   { &replace11_0_0_0.value },
96496c5ddc4Srjs   NULL,
96596c5ddc4Srjs};
96696c5ddc4Srjs
96796c5ddc4Srjs   /* search23_0 -> search8_0 in the cache */
96896c5ddc4Srjsstatic const nir_search_expression search23 = {
96996c5ddc4Srjs   { nir_search_value_expression, 64 },
97096c5ddc4Srjs   false, false,
97196c5ddc4Srjs   -1, 0,
97296c5ddc4Srjs   nir_op_u2u64,
97396c5ddc4Srjs   { &search8_0.value },
97496c5ddc4Srjs   NULL,
97596c5ddc4Srjs};
97696c5ddc4Srjs
97796c5ddc4Srjs   /* replace23_0_0 -> search8_0 in the cache */
97896c5ddc4Srjs/* replace23_0 -> replace8_0_0 in the cache */
97996c5ddc4Srjsstatic const nir_search_expression replace23 = {
98096c5ddc4Srjs   { nir_search_value_expression, 64 },
98196c5ddc4Srjs   false, false,
98296c5ddc4Srjs   -1, 0,
98396c5ddc4Srjs   nir_op_u2u64,
98496c5ddc4Srjs   { &replace8_0_0.value },
98596c5ddc4Srjs   NULL,
98696c5ddc4Srjs};
98796c5ddc4Srjs
98896c5ddc4Srjs   /* search24_0 -> search3_0 in the cache */
98996c5ddc4Srjsstatic const nir_search_expression search24 = {
99096c5ddc4Srjs   { nir_search_value_expression, 8 },
99196c5ddc4Srjs   false, false,
99296c5ddc4Srjs   -1, 0,
99396c5ddc4Srjs   nir_op_i2i8,
99496c5ddc4Srjs   { &search3_0.value },
99596c5ddc4Srjs   NULL,
99696c5ddc4Srjs};
99796c5ddc4Srjs
99896c5ddc4Srjs   /* replace24_0_0 -> search3_0 in the cache */
99996c5ddc4Srjsstatic const nir_search_expression replace24_0 = {
100096c5ddc4Srjs   { nir_search_value_expression, 16 },
100196c5ddc4Srjs   false, false,
100296c5ddc4Srjs   -1, 0,
100396c5ddc4Srjs   nir_op_i2i16,
100496c5ddc4Srjs   { &search3_0.value },
100596c5ddc4Srjs   NULL,
100696c5ddc4Srjs};
100796c5ddc4Srjsstatic const nir_search_expression replace24 = {
100896c5ddc4Srjs   { nir_search_value_expression, 8 },
100996c5ddc4Srjs   false, false,
101096c5ddc4Srjs   -1, 0,
101196c5ddc4Srjs   nir_op_i2i8,
101296c5ddc4Srjs   { &replace24_0.value },
101396c5ddc4Srjs   NULL,
101496c5ddc4Srjs};
101596c5ddc4Srjs
101696c5ddc4Srjs   /* search25_0 -> search19_0 in the cache */
101796c5ddc4Srjsstatic const nir_search_expression search25 = {
101896c5ddc4Srjs   { nir_search_value_expression, 8 },
101996c5ddc4Srjs   false, false,
102096c5ddc4Srjs   -1, 0,
102196c5ddc4Srjs   nir_op_i2i8,
102296c5ddc4Srjs   { &search19_0.value },
102396c5ddc4Srjs   NULL,
102496c5ddc4Srjs};
102596c5ddc4Srjs
102696c5ddc4Srjs   /* replace25_0_0_0 -> search19_0 in the cache */
102796c5ddc4Srjsstatic const nir_search_expression replace25_0_0 = {
102896c5ddc4Srjs   { nir_search_value_expression, 32 },
102996c5ddc4Srjs   false, false,
103096c5ddc4Srjs   -1, 0,
103196c5ddc4Srjs   nir_op_i2i32,
103296c5ddc4Srjs   { &search19_0.value },
103396c5ddc4Srjs   NULL,
103496c5ddc4Srjs};
103596c5ddc4Srjsstatic const nir_search_expression replace25_0 = {
103696c5ddc4Srjs   { nir_search_value_expression, 16 },
103796c5ddc4Srjs   false, false,
103896c5ddc4Srjs   -1, 0,
103996c5ddc4Srjs   nir_op_i2i16,
104096c5ddc4Srjs   { &replace25_0_0.value },
104196c5ddc4Srjs   NULL,
104296c5ddc4Srjs};
104396c5ddc4Srjsstatic const nir_search_expression replace25 = {
104496c5ddc4Srjs   { nir_search_value_expression, 8 },
104596c5ddc4Srjs   false, false,
104696c5ddc4Srjs   -1, 0,
104796c5ddc4Srjs   nir_op_i2i8,
104896c5ddc4Srjs   { &replace25_0.value },
104996c5ddc4Srjs   NULL,
105096c5ddc4Srjs};
105196c5ddc4Srjs
105296c5ddc4Srjs   /* search26_0 -> search19_0 in the cache */
105396c5ddc4Srjsstatic const nir_search_expression search26 = {
105496c5ddc4Srjs   { nir_search_value_expression, 16 },
105596c5ddc4Srjs   false, false,
105696c5ddc4Srjs   -1, 0,
105796c5ddc4Srjs   nir_op_i2i16,
105896c5ddc4Srjs   { &search19_0.value },
105996c5ddc4Srjs   NULL,
106096c5ddc4Srjs};
106196c5ddc4Srjs
106296c5ddc4Srjs   /* replace26_0_0 -> search19_0 in the cache */
106396c5ddc4Srjs/* replace26_0 -> replace25_0_0 in the cache */
106496c5ddc4Srjs/* replace26 -> replace25_0 in the cache */
106596c5ddc4Srjs
106696c5ddc4Srjs   /* search27_0 -> search11_0 in the cache */
106796c5ddc4Srjsstatic const nir_search_expression search27 = {
106896c5ddc4Srjs   { nir_search_value_expression, 32 },
106996c5ddc4Srjs   false, false,
107096c5ddc4Srjs   -1, 0,
107196c5ddc4Srjs   nir_op_i2i32,
107296c5ddc4Srjs   { &search11_0.value },
107396c5ddc4Srjs   NULL,
107496c5ddc4Srjs};
107596c5ddc4Srjs
107696c5ddc4Srjs   /* replace27_0_0 -> search11_0 in the cache */
107796c5ddc4Srjs/* replace27_0 -> replace12_0_0_0_0 in the cache */
107896c5ddc4Srjs/* replace27 -> replace12_0_0_0 in the cache */
107996c5ddc4Srjs
108096c5ddc4Srjs   /* search28_0 -> search11_0 in the cache */
108196c5ddc4Srjsstatic const nir_search_expression search28 = {
108296c5ddc4Srjs   { nir_search_value_expression, 64 },
108396c5ddc4Srjs   false, false,
108496c5ddc4Srjs   -1, 0,
108596c5ddc4Srjs   nir_op_i2i64,
108696c5ddc4Srjs   { &search11_0.value },
108796c5ddc4Srjs   NULL,
108896c5ddc4Srjs};
108996c5ddc4Srjs
109096c5ddc4Srjs   /* replace28_0_0_0 -> search11_0 in the cache */
109196c5ddc4Srjs/* replace28_0_0 -> replace12_0_0_0_0 in the cache */
109296c5ddc4Srjs/* replace28_0 -> replace12_0_0_0 in the cache */
109396c5ddc4Srjsstatic const nir_search_expression replace28 = {
109496c5ddc4Srjs   { nir_search_value_expression, 64 },
109596c5ddc4Srjs   false, false,
109696c5ddc4Srjs   -1, 0,
109796c5ddc4Srjs   nir_op_i2i64,
109896c5ddc4Srjs   { &replace12_0_0_0.value },
109996c5ddc4Srjs   NULL,
110096c5ddc4Srjs};
110196c5ddc4Srjs
110296c5ddc4Srjs   /* search29_0 -> search8_0 in the cache */
110396c5ddc4Srjsstatic const nir_search_expression search29 = {
110496c5ddc4Srjs   { nir_search_value_expression, 64 },
110596c5ddc4Srjs   false, false,
110696c5ddc4Srjs   -1, 0,
110796c5ddc4Srjs   nir_op_i2i64,
110896c5ddc4Srjs   { &search8_0.value },
110996c5ddc4Srjs   NULL,
111096c5ddc4Srjs};
111196c5ddc4Srjs
111296c5ddc4Srjs   /* replace29_0_0 -> search8_0 in the cache */
111396c5ddc4Srjs/* replace29_0 -> replace9_0_0 in the cache */
111496c5ddc4Srjsstatic const nir_search_expression replace29 = {
111596c5ddc4Srjs   { nir_search_value_expression, 64 },
111696c5ddc4Srjs   false, false,
111796c5ddc4Srjs   -1, 0,
111896c5ddc4Srjs   nir_op_i2i64,
111996c5ddc4Srjs   { &replace9_0_0.value },
112096c5ddc4Srjs   NULL,
112196c5ddc4Srjs};
112296c5ddc4Srjs
112396c5ddc4Srjs   /* search30_0 -> search19_0 in the cache */
112496c5ddc4Srjsstatic const nir_search_expression search30 = {
112596c5ddc4Srjs   { nir_search_value_expression, 16 },
112696c5ddc4Srjs   false, false,
112796c5ddc4Srjs   -1, 0,
112896c5ddc4Srjs   nir_op_f2f16,
112996c5ddc4Srjs   { &search19_0.value },
113096c5ddc4Srjs   NULL,
113196c5ddc4Srjs};
113296c5ddc4Srjs
113396c5ddc4Srjs   /* replace30_0_0 -> search19_0 in the cache */
113496c5ddc4Srjsstatic const nir_search_expression replace30_0 = {
113596c5ddc4Srjs   { nir_search_value_expression, 32 },
113696c5ddc4Srjs   false, false,
113796c5ddc4Srjs   -1, 0,
113896c5ddc4Srjs   nir_op_f2f32,
113996c5ddc4Srjs   { &search19_0.value },
114096c5ddc4Srjs   NULL,
114196c5ddc4Srjs};
114296c5ddc4Srjsstatic const nir_search_expression replace30 = {
114396c5ddc4Srjs   { nir_search_value_expression, 16 },
114496c5ddc4Srjs   false, false,
114596c5ddc4Srjs   -1, 0,
114696c5ddc4Srjs   nir_op_f2f16,
114796c5ddc4Srjs   { &replace30_0.value },
114896c5ddc4Srjs   NULL,
114996c5ddc4Srjs};
115096c5ddc4Srjs
115196c5ddc4Srjs   /* search31_0 -> search8_0 in the cache */
115296c5ddc4Srjsstatic const nir_search_expression search31 = {
115396c5ddc4Srjs   { nir_search_value_expression, 64 },
115496c5ddc4Srjs   false, false,
115596c5ddc4Srjs   -1, 0,
115696c5ddc4Srjs   nir_op_f2f64,
115796c5ddc4Srjs   { &search8_0.value },
115896c5ddc4Srjs   NULL,
115996c5ddc4Srjs};
116096c5ddc4Srjs
116196c5ddc4Srjs   /* replace31_0_0 -> search8_0 in the cache */
116296c5ddc4Srjsstatic const nir_search_expression replace31_0 = {
116396c5ddc4Srjs   { nir_search_value_expression, 32 },
116496c5ddc4Srjs   false, false,
116596c5ddc4Srjs   -1, 0,
116696c5ddc4Srjs   nir_op_f2f32,
116796c5ddc4Srjs   { &search8_0.value },
116896c5ddc4Srjs   NULL,
116996c5ddc4Srjs};
117096c5ddc4Srjsstatic const nir_search_expression replace31 = {
117196c5ddc4Srjs   { nir_search_value_expression, 64 },
117296c5ddc4Srjs   false, false,
117396c5ddc4Srjs   -1, 0,
117496c5ddc4Srjs   nir_op_f2f64,
117596c5ddc4Srjs   { &replace31_0.value },
117696c5ddc4Srjs   NULL,
117796c5ddc4Srjs};
117896c5ddc4Srjs
117996c5ddc4Srjs   /* search32_0 -> search19_0 in the cache */
118096c5ddc4Srjsstatic const nir_search_expression search32 = {
118196c5ddc4Srjs   { nir_search_value_expression, 16 },
118296c5ddc4Srjs   false, false,
118396c5ddc4Srjs   -1, 0,
118496c5ddc4Srjs   nir_op_i2f16,
118596c5ddc4Srjs   { &search19_0.value },
118696c5ddc4Srjs   NULL,
118796c5ddc4Srjs};
118896c5ddc4Srjs
118996c5ddc4Srjs   /* replace32_0_0_0 -> search19_0 in the cache */
119096c5ddc4Srjsstatic const nir_search_expression replace32_0_0 = {
119196c5ddc4Srjs   { nir_search_value_expression, 64 },
119296c5ddc4Srjs   false, false,
119396c5ddc4Srjs   -1, 0,
119496c5ddc4Srjs   nir_op_i2f64,
119596c5ddc4Srjs   { &search19_0.value },
119696c5ddc4Srjs   NULL,
119796c5ddc4Srjs};
119896c5ddc4Srjsstatic const nir_search_expression replace32_0 = {
119996c5ddc4Srjs   { nir_search_value_expression, 32 },
120096c5ddc4Srjs   false, false,
120196c5ddc4Srjs   -1, 0,
120296c5ddc4Srjs   nir_op_f2f32,
120396c5ddc4Srjs   { &replace32_0_0.value },
120496c5ddc4Srjs   NULL,
120596c5ddc4Srjs};
120696c5ddc4Srjsstatic const nir_search_expression replace32 = {
120796c5ddc4Srjs   { nir_search_value_expression, 16 },
120896c5ddc4Srjs   false, false,
120996c5ddc4Srjs   -1, 0,
121096c5ddc4Srjs   nir_op_f2f16,
121196c5ddc4Srjs   { &replace32_0.value },
121296c5ddc4Srjs   NULL,
121396c5ddc4Srjs};
121496c5ddc4Srjs
121596c5ddc4Srjs   /* search33_0 -> search11_0 in the cache */
121696c5ddc4Srjsstatic const nir_search_expression search33 = {
121796c5ddc4Srjs   { nir_search_value_expression, 32 },
121896c5ddc4Srjs   false, false,
121996c5ddc4Srjs   -1, 0,
122096c5ddc4Srjs   nir_op_i2f32,
122196c5ddc4Srjs   { &search11_0.value },
122296c5ddc4Srjs   NULL,
122396c5ddc4Srjs};
122496c5ddc4Srjs
122596c5ddc4Srjs   /* replace33_0_0_0 -> search11_0 in the cache */
122696c5ddc4Srjs/* replace33_0_0 -> replace12_0_0_0_0 in the cache */
122796c5ddc4Srjs/* replace33_0 -> replace12_0_0_0 in the cache */
122896c5ddc4Srjsstatic const nir_search_expression replace33 = {
122996c5ddc4Srjs   { nir_search_value_expression, 32 },
123096c5ddc4Srjs   false, false,
123196c5ddc4Srjs   -1, 0,
123296c5ddc4Srjs   nir_op_i2f32,
123396c5ddc4Srjs   { &replace12_0_0_0.value },
123496c5ddc4Srjs   NULL,
123596c5ddc4Srjs};
123696c5ddc4Srjs
123796c5ddc4Srjs   /* search34_0 -> search11_0 in the cache */
123896c5ddc4Srjsstatic const nir_search_expression search34 = {
123996c5ddc4Srjs   { nir_search_value_expression, 64 },
124096c5ddc4Srjs   false, false,
124196c5ddc4Srjs   -1, 0,
124296c5ddc4Srjs   nir_op_i2f64,
124396c5ddc4Srjs   { &search11_0.value },
124496c5ddc4Srjs   NULL,
124596c5ddc4Srjs};
124696c5ddc4Srjs
124796c5ddc4Srjs   /* replace34_0_0_0_0 -> search11_0 in the cache */
124896c5ddc4Srjs/* replace34_0_0_0 -> replace12_0_0_0_0 in the cache */
124996c5ddc4Srjs/* replace34_0_0 -> replace12_0_0_0 in the cache */
125096c5ddc4Srjs/* replace34_0 -> replace28 in the cache */
125196c5ddc4Srjsstatic const nir_search_expression replace34 = {
125296c5ddc4Srjs   { nir_search_value_expression, 64 },
125396c5ddc4Srjs   false, false,
125496c5ddc4Srjs   -1, 0,
125596c5ddc4Srjs   nir_op_i2f64,
125696c5ddc4Srjs   { &replace28.value },
125796c5ddc4Srjs   NULL,
125896c5ddc4Srjs};
125996c5ddc4Srjs
126096c5ddc4Srjs   /* search35_0 -> search8_0 in the cache */
126196c5ddc4Srjsstatic const nir_search_expression search35 = {
126296c5ddc4Srjs   { nir_search_value_expression, 64 },
126396c5ddc4Srjs   false, false,
126496c5ddc4Srjs   -1, 0,
126596c5ddc4Srjs   nir_op_i2f64,
126696c5ddc4Srjs   { &search8_0.value },
126796c5ddc4Srjs   NULL,
126896c5ddc4Srjs};
126996c5ddc4Srjs
127096c5ddc4Srjs   /* replace35_0_0_0 -> search8_0 in the cache */
127196c5ddc4Srjs/* replace35_0_0 -> replace9_0_0 in the cache */
127296c5ddc4Srjs/* replace35_0 -> replace29 in the cache */
127396c5ddc4Srjsstatic const nir_search_expression replace35 = {
127496c5ddc4Srjs   { nir_search_value_expression, 64 },
127596c5ddc4Srjs   false, false,
127696c5ddc4Srjs   -1, 0,
127796c5ddc4Srjs   nir_op_i2f64,
127896c5ddc4Srjs   { &replace29.value },
127996c5ddc4Srjs   NULL,
128096c5ddc4Srjs};
128196c5ddc4Srjs
128296c5ddc4Srjs   /* search36_0 -> search19_0 in the cache */
128396c5ddc4Srjsstatic const nir_search_expression search36 = {
128496c5ddc4Srjs   { nir_search_value_expression, 16 },
128596c5ddc4Srjs   false, false,
128696c5ddc4Srjs   -1, 0,
128796c5ddc4Srjs   nir_op_u2f16,
128896c5ddc4Srjs   { &search19_0.value },
128996c5ddc4Srjs   NULL,
129096c5ddc4Srjs};
129196c5ddc4Srjs
129296c5ddc4Srjs   /* replace36_0_0_0 -> search19_0 in the cache */
129396c5ddc4Srjsstatic const nir_search_expression replace36_0_0 = {
129496c5ddc4Srjs   { nir_search_value_expression, 64 },
129596c5ddc4Srjs   false, false,
129696c5ddc4Srjs   -1, 0,
129796c5ddc4Srjs   nir_op_u2f64,
129896c5ddc4Srjs   { &search19_0.value },
129996c5ddc4Srjs   NULL,
130096c5ddc4Srjs};
130196c5ddc4Srjsstatic const nir_search_expression replace36_0 = {
130296c5ddc4Srjs   { nir_search_value_expression, 32 },
130396c5ddc4Srjs   false, false,
130496c5ddc4Srjs   -1, 0,
130596c5ddc4Srjs   nir_op_f2f32,
130696c5ddc4Srjs   { &replace36_0_0.value },
130796c5ddc4Srjs   NULL,
130896c5ddc4Srjs};
130996c5ddc4Srjsstatic const nir_search_expression replace36 = {
131096c5ddc4Srjs   { nir_search_value_expression, 16 },
131196c5ddc4Srjs   false, false,
131296c5ddc4Srjs   -1, 0,
131396c5ddc4Srjs   nir_op_f2f16,
131496c5ddc4Srjs   { &replace36_0.value },
131596c5ddc4Srjs   NULL,
131696c5ddc4Srjs};
131796c5ddc4Srjs
131896c5ddc4Srjs   /* search37_0 -> search11_0 in the cache */
131996c5ddc4Srjsstatic const nir_search_expression search37 = {
132096c5ddc4Srjs   { nir_search_value_expression, 32 },
132196c5ddc4Srjs   false, false,
132296c5ddc4Srjs   -1, 0,
132396c5ddc4Srjs   nir_op_u2f32,
132496c5ddc4Srjs   { &search11_0.value },
132596c5ddc4Srjs   NULL,
132696c5ddc4Srjs};
132796c5ddc4Srjs
132896c5ddc4Srjs   /* replace37_0_0_0 -> search11_0 in the cache */
132996c5ddc4Srjs/* replace37_0_0 -> replace11_0_0_0_0 in the cache */
133096c5ddc4Srjs/* replace37_0 -> replace11_0_0_0 in the cache */
133196c5ddc4Srjsstatic const nir_search_expression replace37 = {
133296c5ddc4Srjs   { nir_search_value_expression, 32 },
133396c5ddc4Srjs   false, false,
133496c5ddc4Srjs   -1, 0,
133596c5ddc4Srjs   nir_op_u2f32,
133696c5ddc4Srjs   { &replace11_0_0_0.value },
133796c5ddc4Srjs   NULL,
133896c5ddc4Srjs};
133996c5ddc4Srjs
134096c5ddc4Srjs   /* search38_0 -> search11_0 in the cache */
134196c5ddc4Srjsstatic const nir_search_expression search38 = {
134296c5ddc4Srjs   { nir_search_value_expression, 64 },
134396c5ddc4Srjs   false, false,
134496c5ddc4Srjs   -1, 0,
134596c5ddc4Srjs   nir_op_u2f64,
134696c5ddc4Srjs   { &search11_0.value },
134796c5ddc4Srjs   NULL,
134896c5ddc4Srjs};
134996c5ddc4Srjs
135096c5ddc4Srjs   /* replace38_0_0_0_0 -> search11_0 in the cache */
135196c5ddc4Srjs/* replace38_0_0_0 -> replace11_0_0_0_0 in the cache */
135296c5ddc4Srjs/* replace38_0_0 -> replace11_0_0_0 in the cache */
135396c5ddc4Srjs/* replace38_0 -> replace22 in the cache */
135496c5ddc4Srjsstatic const nir_search_expression replace38 = {
135596c5ddc4Srjs   { nir_search_value_expression, 64 },
135696c5ddc4Srjs   false, false,
135796c5ddc4Srjs   -1, 0,
135896c5ddc4Srjs   nir_op_u2f64,
135996c5ddc4Srjs   { &replace22.value },
136096c5ddc4Srjs   NULL,
136196c5ddc4Srjs};
136296c5ddc4Srjs
136396c5ddc4Srjs   /* search39_0 -> search8_0 in the cache */
136496c5ddc4Srjsstatic const nir_search_expression search39 = {
136596c5ddc4Srjs   { nir_search_value_expression, 64 },
136696c5ddc4Srjs   false, false,
136796c5ddc4Srjs   -1, 0,
136896c5ddc4Srjs   nir_op_u2f64,
136996c5ddc4Srjs   { &search8_0.value },
137096c5ddc4Srjs   NULL,
137196c5ddc4Srjs};
137296c5ddc4Srjs
137396c5ddc4Srjs   /* replace39_0_0_0 -> search8_0 in the cache */
137496c5ddc4Srjs/* replace39_0_0 -> replace8_0_0 in the cache */
137596c5ddc4Srjs/* replace39_0 -> replace23 in the cache */
137696c5ddc4Srjsstatic const nir_search_expression replace39 = {
137796c5ddc4Srjs   { nir_search_value_expression, 64 },
137896c5ddc4Srjs   false, false,
137996c5ddc4Srjs   -1, 0,
138096c5ddc4Srjs   nir_op_u2f64,
138196c5ddc4Srjs   { &replace23.value },
138296c5ddc4Srjs   NULL,
138396c5ddc4Srjs};
138496c5ddc4Srjs
138596c5ddc4Srjs   /* search40_0 -> search3_0 in the cache */
138696c5ddc4Srjsstatic const nir_search_expression search40 = {
138796c5ddc4Srjs   { nir_search_value_expression, 8 },
138896c5ddc4Srjs   false, false,
138996c5ddc4Srjs   -1, 0,
139096c5ddc4Srjs   nir_op_f2i8,
139196c5ddc4Srjs   { &search3_0.value },
139296c5ddc4Srjs   NULL,
139396c5ddc4Srjs};
139496c5ddc4Srjs
139596c5ddc4Srjs   /* replace40_0_0_0 -> search3_0 in the cache */
139696c5ddc4Srjsstatic const nir_search_expression replace40_0_0 = {
139796c5ddc4Srjs   { nir_search_value_expression, 32 },
139896c5ddc4Srjs   false, false,
139996c5ddc4Srjs   -1, 0,
140096c5ddc4Srjs   nir_op_f2i32,
140196c5ddc4Srjs   { &search3_0.value },
140296c5ddc4Srjs   NULL,
140396c5ddc4Srjs};
140496c5ddc4Srjsstatic const nir_search_expression replace40_0 = {
140596c5ddc4Srjs   { nir_search_value_expression, 16 },
140696c5ddc4Srjs   false, false,
140796c5ddc4Srjs   -1, 0,
140896c5ddc4Srjs   nir_op_i2i16,
140996c5ddc4Srjs   { &replace40_0_0.value },
141096c5ddc4Srjs   NULL,
141196c5ddc4Srjs};
141296c5ddc4Srjsstatic const nir_search_expression replace40 = {
141396c5ddc4Srjs   { nir_search_value_expression, 8 },
141496c5ddc4Srjs   false, false,
141596c5ddc4Srjs   -1, 0,
141696c5ddc4Srjs   nir_op_i2i8,
141796c5ddc4Srjs   { &replace40_0.value },
141896c5ddc4Srjs   NULL,
141996c5ddc4Srjs};
142096c5ddc4Srjs
142196c5ddc4Srjs   /* search41_0 -> search19_0 in the cache */
142296c5ddc4Srjsstatic const nir_search_expression search41 = {
142396c5ddc4Srjs   { nir_search_value_expression, 8 },
142496c5ddc4Srjs   false, false,
142596c5ddc4Srjs   -1, 0,
142696c5ddc4Srjs   nir_op_f2i8,
142796c5ddc4Srjs   { &search19_0.value },
142896c5ddc4Srjs   NULL,
142996c5ddc4Srjs};
143096c5ddc4Srjs
143196c5ddc4Srjs   /* replace41_0_0_0_0 -> search19_0 in the cache */
143296c5ddc4Srjsstatic const nir_search_expression replace41_0_0_0 = {
143396c5ddc4Srjs   { nir_search_value_expression, 64 },
143496c5ddc4Srjs   false, false,
143596c5ddc4Srjs   -1, 0,
143696c5ddc4Srjs   nir_op_f2i64,
143796c5ddc4Srjs   { &search19_0.value },
143896c5ddc4Srjs   NULL,
143996c5ddc4Srjs};
144096c5ddc4Srjsstatic const nir_search_expression replace41_0_0 = {
144196c5ddc4Srjs   { nir_search_value_expression, 32 },
144296c5ddc4Srjs   false, false,
144396c5ddc4Srjs   -1, 0,
144496c5ddc4Srjs   nir_op_i2i32,
144596c5ddc4Srjs   { &replace41_0_0_0.value },
144696c5ddc4Srjs   NULL,
144796c5ddc4Srjs};
144896c5ddc4Srjsstatic const nir_search_expression replace41_0 = {
144996c5ddc4Srjs   { nir_search_value_expression, 16 },
145096c5ddc4Srjs   false, false,
145196c5ddc4Srjs   -1, 0,
145296c5ddc4Srjs   nir_op_i2i16,
145396c5ddc4Srjs   { &replace41_0_0.value },
145496c5ddc4Srjs   NULL,
145596c5ddc4Srjs};
145696c5ddc4Srjsstatic const nir_search_expression replace41 = {
145796c5ddc4Srjs   { nir_search_value_expression, 8 },
145896c5ddc4Srjs   false, false,
145996c5ddc4Srjs   -1, 0,
146096c5ddc4Srjs   nir_op_i2i8,
146196c5ddc4Srjs   { &replace41_0.value },
146296c5ddc4Srjs   NULL,
146396c5ddc4Srjs};
146496c5ddc4Srjs
146596c5ddc4Srjs   /* search42_0 -> search19_0 in the cache */
146696c5ddc4Srjsstatic const nir_search_expression search42 = {
146796c5ddc4Srjs   { nir_search_value_expression, 16 },
146896c5ddc4Srjs   false, false,
146996c5ddc4Srjs   -1, 0,
147096c5ddc4Srjs   nir_op_f2i16,
147196c5ddc4Srjs   { &search19_0.value },
147296c5ddc4Srjs   NULL,
147396c5ddc4Srjs};
147496c5ddc4Srjs
147596c5ddc4Srjs   /* replace42_0_0_0 -> search19_0 in the cache */
147696c5ddc4Srjs/* replace42_0_0 -> replace41_0_0_0 in the cache */
147796c5ddc4Srjs/* replace42_0 -> replace41_0_0 in the cache */
147896c5ddc4Srjs/* replace42 -> replace41_0 in the cache */
147996c5ddc4Srjs
148096c5ddc4Srjs   /* search43_0 -> search8_0 in the cache */
148196c5ddc4Srjsstatic const nir_search_expression search43 = {
148296c5ddc4Srjs   { nir_search_value_expression, 64 },
148396c5ddc4Srjs   false, false,
148496c5ddc4Srjs   -1, 0,
148596c5ddc4Srjs   nir_op_f2i64,
148696c5ddc4Srjs   { &search8_0.value },
148796c5ddc4Srjs   NULL,
148896c5ddc4Srjs};
148996c5ddc4Srjs
149096c5ddc4Srjs   /* replace43_0_0_0 -> search8_0 in the cache */
149196c5ddc4Srjs/* replace43_0_0 -> replace31_0 in the cache */
149296c5ddc4Srjs/* replace43_0 -> replace31 in the cache */
149396c5ddc4Srjsstatic const nir_search_expression replace43 = {
149496c5ddc4Srjs   { nir_search_value_expression, 64 },
149596c5ddc4Srjs   false, false,
149696c5ddc4Srjs   -1, 0,
149796c5ddc4Srjs   nir_op_f2i64,
149896c5ddc4Srjs   { &replace31.value },
149996c5ddc4Srjs   NULL,
150096c5ddc4Srjs};
150196c5ddc4Srjs
150296c5ddc4Srjs   /* search44_0 -> search3_0 in the cache */
150396c5ddc4Srjsstatic const nir_search_expression search44 = {
150496c5ddc4Srjs   { nir_search_value_expression, 8 },
150596c5ddc4Srjs   false, false,
150696c5ddc4Srjs   -1, 0,
150796c5ddc4Srjs   nir_op_f2u8,
150896c5ddc4Srjs   { &search3_0.value },
150996c5ddc4Srjs   NULL,
151096c5ddc4Srjs};
151196c5ddc4Srjs
151296c5ddc4Srjs   /* replace44_0_0_0 -> search3_0 in the cache */
151396c5ddc4Srjsstatic const nir_search_expression replace44_0_0 = {
151496c5ddc4Srjs   { nir_search_value_expression, 32 },
151596c5ddc4Srjs   false, false,
151696c5ddc4Srjs   -1, 0,
151796c5ddc4Srjs   nir_op_f2u32,
151896c5ddc4Srjs   { &search3_0.value },
151996c5ddc4Srjs   NULL,
152096c5ddc4Srjs};
152196c5ddc4Srjsstatic const nir_search_expression replace44_0 = {
152296c5ddc4Srjs   { nir_search_value_expression, 16 },
152396c5ddc4Srjs   false, false,
152496c5ddc4Srjs   -1, 0,
152596c5ddc4Srjs   nir_op_u2u16,
152696c5ddc4Srjs   { &replace44_0_0.value },
152796c5ddc4Srjs   NULL,
152896c5ddc4Srjs};
152996c5ddc4Srjsstatic const nir_search_expression replace44 = {
153096c5ddc4Srjs   { nir_search_value_expression, 8 },
153196c5ddc4Srjs   false, false,
153296c5ddc4Srjs   -1, 0,
153396c5ddc4Srjs   nir_op_u2u8,
153496c5ddc4Srjs   { &replace44_0.value },
153596c5ddc4Srjs   NULL,
153696c5ddc4Srjs};
153796c5ddc4Srjs
153896c5ddc4Srjs   /* search45_0 -> search19_0 in the cache */
153996c5ddc4Srjsstatic const nir_search_expression search45 = {
154096c5ddc4Srjs   { nir_search_value_expression, 8 },
154196c5ddc4Srjs   false, false,
154296c5ddc4Srjs   -1, 0,
154396c5ddc4Srjs   nir_op_f2u8,
154496c5ddc4Srjs   { &search19_0.value },
154596c5ddc4Srjs   NULL,
154696c5ddc4Srjs};
154796c5ddc4Srjs
154896c5ddc4Srjs   /* replace45_0_0_0_0 -> search19_0 in the cache */
154996c5ddc4Srjsstatic const nir_search_expression replace45_0_0_0 = {
155096c5ddc4Srjs   { nir_search_value_expression, 64 },
155196c5ddc4Srjs   false, false,
155296c5ddc4Srjs   -1, 0,
155396c5ddc4Srjs   nir_op_f2u64,
155496c5ddc4Srjs   { &search19_0.value },
155596c5ddc4Srjs   NULL,
155696c5ddc4Srjs};
155796c5ddc4Srjsstatic const nir_search_expression replace45_0_0 = {
155896c5ddc4Srjs   { nir_search_value_expression, 32 },
155996c5ddc4Srjs   false, false,
156096c5ddc4Srjs   -1, 0,
156196c5ddc4Srjs   nir_op_u2u32,
156296c5ddc4Srjs   { &replace45_0_0_0.value },
156396c5ddc4Srjs   NULL,
156496c5ddc4Srjs};
156596c5ddc4Srjsstatic const nir_search_expression replace45_0 = {
156696c5ddc4Srjs   { nir_search_value_expression, 16 },
156796c5ddc4Srjs   false, false,
156896c5ddc4Srjs   -1, 0,
156996c5ddc4Srjs   nir_op_u2u16,
157096c5ddc4Srjs   { &replace45_0_0.value },
157196c5ddc4Srjs   NULL,
157296c5ddc4Srjs};
157396c5ddc4Srjsstatic const nir_search_expression replace45 = {
157496c5ddc4Srjs   { nir_search_value_expression, 8 },
157596c5ddc4Srjs   false, false,
157696c5ddc4Srjs   -1, 0,
157796c5ddc4Srjs   nir_op_u2u8,
157896c5ddc4Srjs   { &replace45_0.value },
157996c5ddc4Srjs   NULL,
158096c5ddc4Srjs};
158196c5ddc4Srjs
158296c5ddc4Srjs   /* search46_0 -> search19_0 in the cache */
158396c5ddc4Srjsstatic const nir_search_expression search46 = {
158496c5ddc4Srjs   { nir_search_value_expression, 16 },
158596c5ddc4Srjs   false, false,
158696c5ddc4Srjs   -1, 0,
158796c5ddc4Srjs   nir_op_f2u16,
158896c5ddc4Srjs   { &search19_0.value },
158996c5ddc4Srjs   NULL,
159096c5ddc4Srjs};
159196c5ddc4Srjs
159296c5ddc4Srjs   /* replace46_0_0_0 -> search19_0 in the cache */
159396c5ddc4Srjs/* replace46_0_0 -> replace45_0_0_0 in the cache */
159496c5ddc4Srjs/* replace46_0 -> replace45_0_0 in the cache */
159596c5ddc4Srjs/* replace46 -> replace45_0 in the cache */
159696c5ddc4Srjs
159796c5ddc4Srjs   /* search47_0 -> search8_0 in the cache */
159896c5ddc4Srjsstatic const nir_search_expression search47 = {
159996c5ddc4Srjs   { nir_search_value_expression, 64 },
160096c5ddc4Srjs   false, false,
160196c5ddc4Srjs   -1, 0,
160296c5ddc4Srjs   nir_op_f2u64,
160396c5ddc4Srjs   { &search8_0.value },
160496c5ddc4Srjs   NULL,
160596c5ddc4Srjs};
160696c5ddc4Srjs
160796c5ddc4Srjs   /* replace47_0_0_0 -> search8_0 in the cache */
160896c5ddc4Srjs/* replace47_0_0 -> replace31_0 in the cache */
160996c5ddc4Srjs/* replace47_0 -> replace31 in the cache */
161096c5ddc4Srjsstatic const nir_search_expression replace47 = {
161196c5ddc4Srjs   { nir_search_value_expression, 64 },
161296c5ddc4Srjs   false, false,
161396c5ddc4Srjs   -1, 0,
161496c5ddc4Srjs   nir_op_f2u64,
161596c5ddc4Srjs   { &replace31.value },
161696c5ddc4Srjs   NULL,
161796c5ddc4Srjs};
161896c5ddc4Srjs
161996c5ddc4Srjs   /* search48_0 -> search2_0 in the cache */
162096c5ddc4Srjs
162196c5ddc4Srjsstatic const nir_search_variable search48_1 = {
162296c5ddc4Srjs   { nir_search_value_variable, -2 },
162396c5ddc4Srjs   1, /* b */
162496c5ddc4Srjs   true,
162596c5ddc4Srjs   nir_type_invalid,
162696c5ddc4Srjs   NULL,
162796c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
162896c5ddc4Srjs};
162996c5ddc4Srjsstatic const nir_search_expression search48 = {
163096c5ddc4Srjs   { nir_search_value_expression, 1 },
163196c5ddc4Srjs   false, false,
163296c5ddc4Srjs   -1, 0,
163396c5ddc4Srjs   nir_op_fge,
163496c5ddc4Srjs   { &search2_0.value, &search48_1.value },
163596c5ddc4Srjs   NULL,
163696c5ddc4Srjs};
163796c5ddc4Srjs
163896c5ddc4Srjs   /* replace48_0_0 -> search2_0 in the cache */
163996c5ddc4Srjs
164096c5ddc4Srjs/* replace48_0_1 -> search2_1 in the cache */
164196c5ddc4Srjsstatic const nir_search_expression replace48_0 = {
164296c5ddc4Srjs   { nir_search_value_expression, 1 },
164396c5ddc4Srjs   false, false,
164496c5ddc4Srjs   -1, 0,
164596c5ddc4Srjs   nir_op_flt,
164696c5ddc4Srjs   { &search2_0.value, &search2_1.value },
164796c5ddc4Srjs   NULL,
164896c5ddc4Srjs};
164996c5ddc4Srjsstatic const nir_search_expression replace48 = {
165096c5ddc4Srjs   { nir_search_value_expression, 1 },
165196c5ddc4Srjs   false, false,
165296c5ddc4Srjs   -1, 0,
165396c5ddc4Srjs   nir_op_inot,
165496c5ddc4Srjs   { &replace48_0.value },
165596c5ddc4Srjs   NULL,
165696c5ddc4Srjs};
165796c5ddc4Srjs
165896c5ddc4Srjs   /* search49_0 -> search2_0 in the cache */
165996c5ddc4Srjs
166096c5ddc4Srjs/* search49_1 -> search48_1 in the cache */
166196c5ddc4Srjsstatic const nir_search_expression search49 = {
166296c5ddc4Srjs   { nir_search_value_expression, 32 },
166396c5ddc4Srjs   false, false,
166496c5ddc4Srjs   -1, 0,
166596c5ddc4Srjs   nir_op_fge32,
166696c5ddc4Srjs   { &search2_0.value, &search48_1.value },
166796c5ddc4Srjs   NULL,
166896c5ddc4Srjs};
166996c5ddc4Srjs
167096c5ddc4Srjs   /* replace49_0_0 -> search2_0 in the cache */
167196c5ddc4Srjs
167296c5ddc4Srjs/* replace49_0_1 -> search2_1 in the cache */
167396c5ddc4Srjsstatic const nir_search_expression replace49_0 = {
167496c5ddc4Srjs   { nir_search_value_expression, 32 },
167596c5ddc4Srjs   false, false,
167696c5ddc4Srjs   -1, 0,
167796c5ddc4Srjs   nir_op_flt32,
167896c5ddc4Srjs   { &search2_0.value, &search2_1.value },
167996c5ddc4Srjs   NULL,
168096c5ddc4Srjs};
168196c5ddc4Srjsstatic const nir_search_expression replace49 = {
168296c5ddc4Srjs   { nir_search_value_expression, 32 },
168396c5ddc4Srjs   false, false,
168496c5ddc4Srjs   -1, 0,
168596c5ddc4Srjs   nir_op_inot,
168696c5ddc4Srjs   { &replace49_0.value },
168796c5ddc4Srjs   NULL,
168896c5ddc4Srjs};
168996c5ddc4Srjs
169096c5ddc4Srjs   /* search50_0 -> search2_0 in the cache */
169196c5ddc4Srjs
169296c5ddc4Srjs/* search50_1 -> search48_1 in the cache */
169396c5ddc4Srjsstatic const nir_search_expression search50 = {
169496c5ddc4Srjs   { nir_search_value_expression, 32 },
169596c5ddc4Srjs   false, false,
169696c5ddc4Srjs   -1, 0,
169796c5ddc4Srjs   nir_op_ige32,
169896c5ddc4Srjs   { &search2_0.value, &search48_1.value },
169996c5ddc4Srjs   NULL,
170096c5ddc4Srjs};
170196c5ddc4Srjs
170296c5ddc4Srjs   /* replace50_0_0 -> search2_0 in the cache */
170396c5ddc4Srjs
170496c5ddc4Srjs/* replace50_0_1 -> search2_1 in the cache */
170596c5ddc4Srjsstatic const nir_search_expression replace50_0 = {
170696c5ddc4Srjs   { nir_search_value_expression, 32 },
170796c5ddc4Srjs   false, false,
170896c5ddc4Srjs   -1, 0,
170996c5ddc4Srjs   nir_op_ilt32,
171096c5ddc4Srjs   { &search2_0.value, &search2_1.value },
171196c5ddc4Srjs   NULL,
171296c5ddc4Srjs};
171396c5ddc4Srjsstatic const nir_search_expression replace50 = {
171496c5ddc4Srjs   { nir_search_value_expression, 32 },
171596c5ddc4Srjs   false, false,
171696c5ddc4Srjs   -1, 0,
171796c5ddc4Srjs   nir_op_inot,
171896c5ddc4Srjs   { &replace50_0.value },
171996c5ddc4Srjs   NULL,
172096c5ddc4Srjs};
172196c5ddc4Srjs
172296c5ddc4Srjs   /* search51_0 -> search2_0 in the cache */
172396c5ddc4Srjs
172496c5ddc4Srjs/* search51_1 -> search48_1 in the cache */
172596c5ddc4Srjsstatic const nir_search_expression search51 = {
172696c5ddc4Srjs   { nir_search_value_expression, 32 },
172796c5ddc4Srjs   false, false,
172896c5ddc4Srjs   -1, 0,
172996c5ddc4Srjs   nir_op_uge32,
173096c5ddc4Srjs   { &search2_0.value, &search48_1.value },
173196c5ddc4Srjs   NULL,
173296c5ddc4Srjs};
173396c5ddc4Srjs
173496c5ddc4Srjs   /* replace51_0_0 -> search2_0 in the cache */
173596c5ddc4Srjs
173696c5ddc4Srjs/* replace51_0_1 -> search2_1 in the cache */
173796c5ddc4Srjsstatic const nir_search_expression replace51_0 = {
173896c5ddc4Srjs   { nir_search_value_expression, 32 },
173996c5ddc4Srjs   false, false,
174096c5ddc4Srjs   -1, 0,
174196c5ddc4Srjs   nir_op_ult32,
174296c5ddc4Srjs   { &search2_0.value, &search2_1.value },
174396c5ddc4Srjs   NULL,
174496c5ddc4Srjs};
174596c5ddc4Srjsstatic const nir_search_expression replace51 = {
174696c5ddc4Srjs   { nir_search_value_expression, 32 },
174796c5ddc4Srjs   false, false,
174896c5ddc4Srjs   -1, 0,
174996c5ddc4Srjs   nir_op_inot,
175096c5ddc4Srjs   { &replace51_0.value },
175196c5ddc4Srjs   NULL,
175296c5ddc4Srjs};
175396c5ddc4Srjs
175496c5ddc4Srjs   static const nir_search_variable search52_0 = {
175596c5ddc4Srjs   { nir_search_value_variable, -2 },
175696c5ddc4Srjs   0, /* a */
175796c5ddc4Srjs   true,
175896c5ddc4Srjs   nir_type_invalid,
175996c5ddc4Srjs   NULL,
176096c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
176196c5ddc4Srjs};
176296c5ddc4Srjs
176396c5ddc4Srjs/* search52_1 -> search2_1 in the cache */
176496c5ddc4Srjsstatic const nir_search_expression search52 = {
176596c5ddc4Srjs   { nir_search_value_expression, 32 },
176696c5ddc4Srjs   false, false,
176796c5ddc4Srjs   -1, 0,
176896c5ddc4Srjs   nir_op_flt32,
176996c5ddc4Srjs   { &search52_0.value, &search2_1.value },
177096c5ddc4Srjs   NULL,
177196c5ddc4Srjs};
177296c5ddc4Srjs
177396c5ddc4Srjs   /* replace52_0_0 -> search2_0 in the cache */
177496c5ddc4Srjs
177596c5ddc4Srjs/* replace52_0_1 -> search2_1 in the cache */
177696c5ddc4Srjsstatic const nir_search_expression replace52_0 = {
177796c5ddc4Srjs   { nir_search_value_expression, 32 },
177896c5ddc4Srjs   false, false,
177996c5ddc4Srjs   -1, 0,
178096c5ddc4Srjs   nir_op_fge32,
178196c5ddc4Srjs   { &search2_0.value, &search2_1.value },
178296c5ddc4Srjs   NULL,
178396c5ddc4Srjs};
178496c5ddc4Srjsstatic const nir_search_expression replace52 = {
178596c5ddc4Srjs   { nir_search_value_expression, 32 },
178696c5ddc4Srjs   false, false,
178796c5ddc4Srjs   -1, 0,
178896c5ddc4Srjs   nir_op_inot,
178996c5ddc4Srjs   { &replace52_0.value },
179096c5ddc4Srjs   NULL,
179196c5ddc4Srjs};
179296c5ddc4Srjs
179396c5ddc4Srjs   /* search53_0 -> search52_0 in the cache */
179496c5ddc4Srjs
179596c5ddc4Srjs/* search53_1 -> search2_1 in the cache */
179696c5ddc4Srjsstatic const nir_search_expression search53 = {
179796c5ddc4Srjs   { nir_search_value_expression, 32 },
179896c5ddc4Srjs   false, false,
179996c5ddc4Srjs   -1, 0,
180096c5ddc4Srjs   nir_op_ilt32,
180196c5ddc4Srjs   { &search52_0.value, &search2_1.value },
180296c5ddc4Srjs   NULL,
180396c5ddc4Srjs};
180496c5ddc4Srjs
180596c5ddc4Srjs   /* replace53_0_0 -> search2_0 in the cache */
180696c5ddc4Srjs
180796c5ddc4Srjs/* replace53_0_1 -> search2_1 in the cache */
180896c5ddc4Srjsstatic const nir_search_expression replace53_0 = {
180996c5ddc4Srjs   { nir_search_value_expression, 32 },
181096c5ddc4Srjs   false, false,
181196c5ddc4Srjs   -1, 0,
181296c5ddc4Srjs   nir_op_ige32,
181396c5ddc4Srjs   { &search2_0.value, &search2_1.value },
181496c5ddc4Srjs   NULL,
181596c5ddc4Srjs};
181696c5ddc4Srjsstatic const nir_search_expression replace53 = {
181796c5ddc4Srjs   { nir_search_value_expression, 32 },
181896c5ddc4Srjs   false, false,
181996c5ddc4Srjs   -1, 0,
182096c5ddc4Srjs   nir_op_inot,
182196c5ddc4Srjs   { &replace53_0.value },
182296c5ddc4Srjs   NULL,
182396c5ddc4Srjs};
182496c5ddc4Srjs
182596c5ddc4Srjs   /* search54_0 -> search52_0 in the cache */
182696c5ddc4Srjs
182796c5ddc4Srjs/* search54_1 -> search2_1 in the cache */
182896c5ddc4Srjsstatic const nir_search_expression search54 = {
182996c5ddc4Srjs   { nir_search_value_expression, 32 },
183096c5ddc4Srjs   false, false,
183196c5ddc4Srjs   -1, 0,
183296c5ddc4Srjs   nir_op_ult32,
183396c5ddc4Srjs   { &search52_0.value, &search2_1.value },
183496c5ddc4Srjs   NULL,
183596c5ddc4Srjs};
183696c5ddc4Srjs
183796c5ddc4Srjs   /* replace54_0_0 -> search2_0 in the cache */
183896c5ddc4Srjs
183996c5ddc4Srjs/* replace54_0_1 -> search2_1 in the cache */
184096c5ddc4Srjsstatic const nir_search_expression replace54_0 = {
184196c5ddc4Srjs   { nir_search_value_expression, 32 },
184296c5ddc4Srjs   false, false,
184396c5ddc4Srjs   -1, 0,
184496c5ddc4Srjs   nir_op_uge32,
184596c5ddc4Srjs   { &search2_0.value, &search2_1.value },
184696c5ddc4Srjs   NULL,
184796c5ddc4Srjs};
184896c5ddc4Srjsstatic const nir_search_expression replace54 = {
184996c5ddc4Srjs   { nir_search_value_expression, 32 },
185096c5ddc4Srjs   false, false,
185196c5ddc4Srjs   -1, 0,
185296c5ddc4Srjs   nir_op_inot,
185396c5ddc4Srjs   { &replace54_0.value },
185496c5ddc4Srjs   NULL,
185596c5ddc4Srjs};
185696c5ddc4Srjs
185796c5ddc4Srjs
185896c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state2_xforms[] = {
185996c5ddc4Srjs  { &search1, &replace1.value, 0 },
186096c5ddc4Srjs};
186196c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state3_xforms[] = {
186296c5ddc4Srjs  { &search2, &replace2.value, 0 },
186396c5ddc4Srjs};
186496c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state4_xforms[] = {
186596c5ddc4Srjs  { &search3, &replace3.value, 0 },
186696c5ddc4Srjs};
186796c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state5_xforms[] = {
186896c5ddc4Srjs  { &search4, &replace4.value, 0 },
186996c5ddc4Srjs};
187096c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state6_xforms[] = {
187196c5ddc4Srjs  { &search3, &replace3.value, 0 },
187296c5ddc4Srjs  { &search4, &replace4.value, 0 },
187396c5ddc4Srjs};
187496c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state8_xforms[] = {
187596c5ddc4Srjs  { &search7, &replace7.value, 0 },
187696c5ddc4Srjs};
187796c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state9_xforms[] = {
187896c5ddc4Srjs  { &search8, &replace8.value, 0 },
187996c5ddc4Srjs  { &search11, &replace11.value, 0 },
188096c5ddc4Srjs};
188196c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state10_xforms[] = {
188296c5ddc4Srjs  { &search9, &replace9.value, 0 },
188396c5ddc4Srjs  { &search12, &replace12.value, 0 },
188496c5ddc4Srjs};
188596c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state11_xforms[] = {
188696c5ddc4Srjs  { &search10, &replace10.value, 0 },
188796c5ddc4Srjs  { &search13, &replace13.value, 0 },
188896c5ddc4Srjs};
188996c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state12_xforms[] = {
189096c5ddc4Srjs  { &search14, &replace14.value, 0 },
189196c5ddc4Srjs};
189296c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state13_xforms[] = {
189396c5ddc4Srjs  { &search15, &replace15.value, 0 },
189496c5ddc4Srjs  { &search16, &replace16.value, 0 },
189596c5ddc4Srjs  { &search17, &replace17.value, 0 },
189696c5ddc4Srjs};
189796c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state14_xforms[] = {
189896c5ddc4Srjs  { &search18, &replace18.value, 0 },
189996c5ddc4Srjs  { &search19, &replace19.value, 0 },
190096c5ddc4Srjs  { &search20, &replace19_0.value, 0 },
190196c5ddc4Srjs  { &replace15_1_0, &replace11_0_0_0.value, 0 },
190296c5ddc4Srjs  { &search22, &replace22.value, 0 },
190396c5ddc4Srjs  { &search23, &replace23.value, 0 },
190496c5ddc4Srjs};
190596c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state15_xforms[] = {
190696c5ddc4Srjs  { &search24, &replace24.value, 0 },
190796c5ddc4Srjs  { &search25, &replace25.value, 0 },
190896c5ddc4Srjs  { &search26, &replace25_0.value, 0 },
190996c5ddc4Srjs  { &search27, &replace12_0_0_0.value, 0 },
191096c5ddc4Srjs  { &search28, &replace28.value, 0 },
191196c5ddc4Srjs  { &search29, &replace29.value, 0 },
191296c5ddc4Srjs};
191396c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state16_xforms[] = {
191496c5ddc4Srjs  { &search30, &replace30.value, 0 },
191596c5ddc4Srjs  { &search31, &replace31.value, 0 },
191696c5ddc4Srjs};
191796c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state17_xforms[] = {
191896c5ddc4Srjs  { &search32, &replace32.value, 0 },
191996c5ddc4Srjs  { &search33, &replace33.value, 0 },
192096c5ddc4Srjs  { &search34, &replace34.value, 0 },
192196c5ddc4Srjs  { &search35, &replace35.value, 0 },
192296c5ddc4Srjs};
192396c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state18_xforms[] = {
192496c5ddc4Srjs  { &search36, &replace36.value, 0 },
192596c5ddc4Srjs  { &search37, &replace37.value, 0 },
192696c5ddc4Srjs  { &search38, &replace38.value, 0 },
192796c5ddc4Srjs  { &search39, &replace39.value, 0 },
192896c5ddc4Srjs};
192996c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state19_xforms[] = {
193096c5ddc4Srjs  { &search40, &replace40.value, 0 },
193196c5ddc4Srjs  { &search41, &replace41.value, 0 },
193296c5ddc4Srjs  { &search42, &replace41_0.value, 0 },
193396c5ddc4Srjs  { &search43, &replace43.value, 0 },
193496c5ddc4Srjs};
193596c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state20_xforms[] = {
193696c5ddc4Srjs  { &search44, &replace44.value, 0 },
193796c5ddc4Srjs  { &search45, &replace45.value, 0 },
193896c5ddc4Srjs  { &search46, &replace45_0.value, 0 },
193996c5ddc4Srjs  { &search47, &replace47.value, 0 },
194096c5ddc4Srjs};
194196c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state21_xforms[] = {
194296c5ddc4Srjs  { &search48, &replace48.value, 0 },
194396c5ddc4Srjs};
194496c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state22_xforms[] = {
194596c5ddc4Srjs  { &search49, &replace49.value, 0 },
194696c5ddc4Srjs};
194796c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state23_xforms[] = {
194896c5ddc4Srjs  { &search50, &replace50.value, 0 },
194996c5ddc4Srjs};
195096c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state24_xforms[] = {
195196c5ddc4Srjs  { &search51, &replace51.value, 0 },
195296c5ddc4Srjs};
195396c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state25_xforms[] = {
195496c5ddc4Srjs  { &search52, &replace52.value, 0 },
195596c5ddc4Srjs};
195696c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state26_xforms[] = {
195796c5ddc4Srjs  { &search53, &replace53.value, 0 },
195896c5ddc4Srjs};
195996c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state27_xforms[] = {
196096c5ddc4Srjs  { &search54, &replace54.value, 0 },
196196c5ddc4Srjs};
196296c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state28_xforms[] = {
196396c5ddc4Srjs  { &search6, &replace5.value, 0 },
196496c5ddc4Srjs  { &search7, &replace7.value, 0 },
196596c5ddc4Srjs};
196696c5ddc4Srjsstatic const struct transform midgard_nir_lower_algebraic_late_state29_xforms[] = {
196796c5ddc4Srjs  { &search5, &replace5.value, 0 },
196896c5ddc4Srjs};
196996c5ddc4Srjs
197096c5ddc4Srjsstatic const struct per_op_table midgard_nir_lower_algebraic_late_table[nir_num_search_ops] = {
197196c5ddc4Srjs   [nir_op_ineg] = {
197296c5ddc4Srjs      .filter = (uint16_t []) {
197396c5ddc4Srjs         0,
197496c5ddc4Srjs         0,
197596c5ddc4Srjs         0,
197696c5ddc4Srjs         0,
197796c5ddc4Srjs         0,
197896c5ddc4Srjs         0,
197996c5ddc4Srjs         0,
198096c5ddc4Srjs         0,
198196c5ddc4Srjs         0,
198296c5ddc4Srjs         0,
198396c5ddc4Srjs         0,
198496c5ddc4Srjs         0,
198596c5ddc4Srjs         0,
198696c5ddc4Srjs         0,
198796c5ddc4Srjs         0,
198896c5ddc4Srjs         0,
198996c5ddc4Srjs         0,
199096c5ddc4Srjs         0,
199196c5ddc4Srjs         0,
199296c5ddc4Srjs         0,
199396c5ddc4Srjs         0,
199496c5ddc4Srjs         0,
199596c5ddc4Srjs         0,
199696c5ddc4Srjs         0,
199796c5ddc4Srjs         0,
199896c5ddc4Srjs         0,
199996c5ddc4Srjs         0,
200096c5ddc4Srjs         0,
200196c5ddc4Srjs         0,
200296c5ddc4Srjs         0,
200396c5ddc4Srjs      },
200496c5ddc4Srjs
200596c5ddc4Srjs      .num_filtered_states = 1,
200696c5ddc4Srjs      .table = (uint16_t []) {
200796c5ddc4Srjs
200896c5ddc4Srjs         2,
200996c5ddc4Srjs      },
201096c5ddc4Srjs   },
201196c5ddc4Srjs   [nir_op_fsub] = {
201296c5ddc4Srjs      .filter = (uint16_t []) {
201396c5ddc4Srjs         0,
201496c5ddc4Srjs         0,
201596c5ddc4Srjs         0,
201696c5ddc4Srjs         0,
201796c5ddc4Srjs         0,
201896c5ddc4Srjs         0,
201996c5ddc4Srjs         0,
202096c5ddc4Srjs         0,
202196c5ddc4Srjs         0,
202296c5ddc4Srjs         0,
202396c5ddc4Srjs         0,
202496c5ddc4Srjs         0,
202596c5ddc4Srjs         0,
202696c5ddc4Srjs         0,
202796c5ddc4Srjs         0,
202896c5ddc4Srjs         0,
202996c5ddc4Srjs         0,
203096c5ddc4Srjs         0,
203196c5ddc4Srjs         0,
203296c5ddc4Srjs         0,
203396c5ddc4Srjs         0,
203496c5ddc4Srjs         0,
203596c5ddc4Srjs         0,
203696c5ddc4Srjs         0,
203796c5ddc4Srjs         0,
203896c5ddc4Srjs         0,
203996c5ddc4Srjs         0,
204096c5ddc4Srjs         0,
204196c5ddc4Srjs         0,
204296c5ddc4Srjs         0,
204396c5ddc4Srjs      },
204496c5ddc4Srjs
204596c5ddc4Srjs      .num_filtered_states = 1,
204696c5ddc4Srjs      .table = (uint16_t []) {
204796c5ddc4Srjs
204896c5ddc4Srjs         3,
204996c5ddc4Srjs      },
205096c5ddc4Srjs   },
205196c5ddc4Srjs   [nir_op_b32csel] = {
205296c5ddc4Srjs      .filter = (uint16_t []) {
205396c5ddc4Srjs         0,
205496c5ddc4Srjs         1,
205596c5ddc4Srjs         0,
205696c5ddc4Srjs         0,
205796c5ddc4Srjs         0,
205896c5ddc4Srjs         0,
205996c5ddc4Srjs         0,
206096c5ddc4Srjs         0,
206196c5ddc4Srjs         0,
206296c5ddc4Srjs         0,
206396c5ddc4Srjs         0,
206496c5ddc4Srjs         0,
206596c5ddc4Srjs         0,
206696c5ddc4Srjs         0,
206796c5ddc4Srjs         0,
206896c5ddc4Srjs         0,
206996c5ddc4Srjs         0,
207096c5ddc4Srjs         0,
207196c5ddc4Srjs         0,
207296c5ddc4Srjs         0,
207396c5ddc4Srjs         0,
207496c5ddc4Srjs         0,
207596c5ddc4Srjs         0,
207696c5ddc4Srjs         0,
207796c5ddc4Srjs         0,
207896c5ddc4Srjs         0,
207996c5ddc4Srjs         0,
208096c5ddc4Srjs         0,
208196c5ddc4Srjs         0,
208296c5ddc4Srjs         0,
208396c5ddc4Srjs      },
208496c5ddc4Srjs
208596c5ddc4Srjs      .num_filtered_states = 2,
208696c5ddc4Srjs      .table = (uint16_t []) {
208796c5ddc4Srjs
208896c5ddc4Srjs         0,
208996c5ddc4Srjs         4,
209096c5ddc4Srjs         5,
209196c5ddc4Srjs         6,
209296c5ddc4Srjs         0,
209396c5ddc4Srjs         4,
209496c5ddc4Srjs         5,
209596c5ddc4Srjs         6,
209696c5ddc4Srjs      },
209796c5ddc4Srjs   },
209896c5ddc4Srjs   [nir_op_fmin] = {
209996c5ddc4Srjs      .filter = (uint16_t []) {
210096c5ddc4Srjs         0,
210196c5ddc4Srjs         1,
210296c5ddc4Srjs         0,
210396c5ddc4Srjs         0,
210496c5ddc4Srjs         0,
210596c5ddc4Srjs         0,
210696c5ddc4Srjs         0,
210796c5ddc4Srjs         0,
210896c5ddc4Srjs         2,
210996c5ddc4Srjs         0,
211096c5ddc4Srjs         0,
211196c5ddc4Srjs         0,
211296c5ddc4Srjs         0,
211396c5ddc4Srjs         0,
211496c5ddc4Srjs         0,
211596c5ddc4Srjs         0,
211696c5ddc4Srjs         0,
211796c5ddc4Srjs         0,
211896c5ddc4Srjs         0,
211996c5ddc4Srjs         0,
212096c5ddc4Srjs         0,
212196c5ddc4Srjs         0,
212296c5ddc4Srjs         0,
212396c5ddc4Srjs         0,
212496c5ddc4Srjs         0,
212596c5ddc4Srjs         0,
212696c5ddc4Srjs         0,
212796c5ddc4Srjs         0,
212896c5ddc4Srjs         2,
212996c5ddc4Srjs         0,
213096c5ddc4Srjs      },
213196c5ddc4Srjs
213296c5ddc4Srjs      .num_filtered_states = 3,
213396c5ddc4Srjs      .table = (uint16_t []) {
213496c5ddc4Srjs
213596c5ddc4Srjs         0,
213696c5ddc4Srjs         7,
213796c5ddc4Srjs         0,
213896c5ddc4Srjs         7,
213996c5ddc4Srjs         7,
214096c5ddc4Srjs         29,
214196c5ddc4Srjs         0,
214296c5ddc4Srjs         29,
214396c5ddc4Srjs         0,
214496c5ddc4Srjs      },
214596c5ddc4Srjs   },
214696c5ddc4Srjs   [nir_op_fmax] = {
214796c5ddc4Srjs      .filter = (uint16_t []) {
214896c5ddc4Srjs         0,
214996c5ddc4Srjs         1,
215096c5ddc4Srjs         0,
215196c5ddc4Srjs         0,
215296c5ddc4Srjs         0,
215396c5ddc4Srjs         0,
215496c5ddc4Srjs         0,
215596c5ddc4Srjs         2,
215696c5ddc4Srjs         0,
215796c5ddc4Srjs         0,
215896c5ddc4Srjs         0,
215996c5ddc4Srjs         0,
216096c5ddc4Srjs         0,
216196c5ddc4Srjs         0,
216296c5ddc4Srjs         0,
216396c5ddc4Srjs         0,
216496c5ddc4Srjs         0,
216596c5ddc4Srjs         0,
216696c5ddc4Srjs         0,
216796c5ddc4Srjs         0,
216896c5ddc4Srjs         0,
216996c5ddc4Srjs         0,
217096c5ddc4Srjs         0,
217196c5ddc4Srjs         0,
217296c5ddc4Srjs         0,
217396c5ddc4Srjs         0,
217496c5ddc4Srjs         0,
217596c5ddc4Srjs         0,
217696c5ddc4Srjs         0,
217796c5ddc4Srjs         2,
217896c5ddc4Srjs      },
217996c5ddc4Srjs
218096c5ddc4Srjs      .num_filtered_states = 3,
218196c5ddc4Srjs      .table = (uint16_t []) {
218296c5ddc4Srjs
218396c5ddc4Srjs         0,
218496c5ddc4Srjs         8,
218596c5ddc4Srjs         0,
218696c5ddc4Srjs         8,
218796c5ddc4Srjs         8,
218896c5ddc4Srjs         28,
218996c5ddc4Srjs         0,
219096c5ddc4Srjs         28,
219196c5ddc4Srjs         0,
219296c5ddc4Srjs      },
219396c5ddc4Srjs   },
219496c5ddc4Srjs   [nir_op_ishl] = {
219596c5ddc4Srjs      .filter = (uint16_t []) {
219696c5ddc4Srjs         0,
219796c5ddc4Srjs         0,
219896c5ddc4Srjs         0,
219996c5ddc4Srjs         0,
220096c5ddc4Srjs         0,
220196c5ddc4Srjs         0,
220296c5ddc4Srjs         0,
220396c5ddc4Srjs         0,
220496c5ddc4Srjs         0,
220596c5ddc4Srjs         0,
220696c5ddc4Srjs         0,
220796c5ddc4Srjs         0,
220896c5ddc4Srjs         0,
220996c5ddc4Srjs         0,
221096c5ddc4Srjs         0,
221196c5ddc4Srjs         0,
221296c5ddc4Srjs         0,
221396c5ddc4Srjs         0,
221496c5ddc4Srjs         0,
221596c5ddc4Srjs         0,
221696c5ddc4Srjs         0,
221796c5ddc4Srjs         0,
221896c5ddc4Srjs         0,
221996c5ddc4Srjs         0,
222096c5ddc4Srjs         0,
222196c5ddc4Srjs         0,
222296c5ddc4Srjs         0,
222396c5ddc4Srjs         0,
222496c5ddc4Srjs         0,
222596c5ddc4Srjs         0,
222696c5ddc4Srjs      },
222796c5ddc4Srjs
222896c5ddc4Srjs      .num_filtered_states = 1,
222996c5ddc4Srjs      .table = (uint16_t []) {
223096c5ddc4Srjs
223196c5ddc4Srjs         9,
223296c5ddc4Srjs      },
223396c5ddc4Srjs   },
223496c5ddc4Srjs   [nir_op_ishr] = {
223596c5ddc4Srjs      .filter = (uint16_t []) {
223696c5ddc4Srjs         0,
223796c5ddc4Srjs         0,
223896c5ddc4Srjs         0,
223996c5ddc4Srjs         0,
224096c5ddc4Srjs         0,
224196c5ddc4Srjs         0,
224296c5ddc4Srjs         0,
224396c5ddc4Srjs         0,
224496c5ddc4Srjs         0,
224596c5ddc4Srjs         0,
224696c5ddc4Srjs         0,
224796c5ddc4Srjs         0,
224896c5ddc4Srjs         0,
224996c5ddc4Srjs         0,
225096c5ddc4Srjs         0,
225196c5ddc4Srjs         0,
225296c5ddc4Srjs         0,
225396c5ddc4Srjs         0,
225496c5ddc4Srjs         0,
225596c5ddc4Srjs         0,
225696c5ddc4Srjs         0,
225796c5ddc4Srjs         0,
225896c5ddc4Srjs         0,
225996c5ddc4Srjs         0,
226096c5ddc4Srjs         0,
226196c5ddc4Srjs         0,
226296c5ddc4Srjs         0,
226396c5ddc4Srjs         0,
226496c5ddc4Srjs         0,
226596c5ddc4Srjs         0,
226696c5ddc4Srjs      },
226796c5ddc4Srjs
226896c5ddc4Srjs      .num_filtered_states = 1,
226996c5ddc4Srjs      .table = (uint16_t []) {
227096c5ddc4Srjs
227196c5ddc4Srjs         10,
227296c5ddc4Srjs      },
227396c5ddc4Srjs   },
227496c5ddc4Srjs   [nir_op_ushr] = {
227596c5ddc4Srjs      .filter = (uint16_t []) {
227696c5ddc4Srjs         0,
227796c5ddc4Srjs         0,
227896c5ddc4Srjs         0,
227996c5ddc4Srjs         0,
228096c5ddc4Srjs         0,
228196c5ddc4Srjs         0,
228296c5ddc4Srjs         0,
228396c5ddc4Srjs         0,
228496c5ddc4Srjs         0,
228596c5ddc4Srjs         0,
228696c5ddc4Srjs         0,
228796c5ddc4Srjs         0,
228896c5ddc4Srjs         0,
228996c5ddc4Srjs         0,
229096c5ddc4Srjs         0,
229196c5ddc4Srjs         0,
229296c5ddc4Srjs         0,
229396c5ddc4Srjs         0,
229496c5ddc4Srjs         0,
229596c5ddc4Srjs         0,
229696c5ddc4Srjs         0,
229796c5ddc4Srjs         0,
229896c5ddc4Srjs         0,
229996c5ddc4Srjs         0,
230096c5ddc4Srjs         0,
230196c5ddc4Srjs         0,
230296c5ddc4Srjs         0,
230396c5ddc4Srjs         0,
230496c5ddc4Srjs         0,
230596c5ddc4Srjs         0,
230696c5ddc4Srjs      },
230796c5ddc4Srjs
230896c5ddc4Srjs      .num_filtered_states = 1,
230996c5ddc4Srjs      .table = (uint16_t []) {
231096c5ddc4Srjs
231196c5ddc4Srjs         11,
231296c5ddc4Srjs      },
231396c5ddc4Srjs   },
231496c5ddc4Srjs   [nir_op_fmul] = {
231596c5ddc4Srjs      .filter = (uint16_t []) {
231696c5ddc4Srjs         0,
231796c5ddc4Srjs         1,
231896c5ddc4Srjs         0,
231996c5ddc4Srjs         0,
232096c5ddc4Srjs         0,
232196c5ddc4Srjs         0,
232296c5ddc4Srjs         0,
232396c5ddc4Srjs         0,
232496c5ddc4Srjs         0,
232596c5ddc4Srjs         0,
232696c5ddc4Srjs         0,
232796c5ddc4Srjs         0,
232896c5ddc4Srjs         0,
232996c5ddc4Srjs         0,
233096c5ddc4Srjs         0,
233196c5ddc4Srjs         0,
233296c5ddc4Srjs         0,
233396c5ddc4Srjs         0,
233496c5ddc4Srjs         0,
233596c5ddc4Srjs         0,
233696c5ddc4Srjs         0,
233796c5ddc4Srjs         0,
233896c5ddc4Srjs         0,
233996c5ddc4Srjs         0,
234096c5ddc4Srjs         0,
234196c5ddc4Srjs         0,
234296c5ddc4Srjs         0,
234396c5ddc4Srjs         0,
234496c5ddc4Srjs         0,
234596c5ddc4Srjs         0,
234696c5ddc4Srjs      },
234796c5ddc4Srjs
234896c5ddc4Srjs      .num_filtered_states = 2,
234996c5ddc4Srjs      .table = (uint16_t []) {
235096c5ddc4Srjs
235196c5ddc4Srjs         0,
235296c5ddc4Srjs         12,
235396c5ddc4Srjs         12,
235496c5ddc4Srjs         12,
235596c5ddc4Srjs      },
235696c5ddc4Srjs   },
235796c5ddc4Srjs   [nir_op_ufind_msb] = {
235896c5ddc4Srjs      .filter = (uint16_t []) {
235996c5ddc4Srjs         0,
236096c5ddc4Srjs         0,
236196c5ddc4Srjs         0,
236296c5ddc4Srjs         0,
236396c5ddc4Srjs         0,
236496c5ddc4Srjs         0,
236596c5ddc4Srjs         0,
236696c5ddc4Srjs         0,
236796c5ddc4Srjs         0,
236896c5ddc4Srjs         0,
236996c5ddc4Srjs         0,
237096c5ddc4Srjs         0,
237196c5ddc4Srjs         0,
237296c5ddc4Srjs         0,
237396c5ddc4Srjs         0,
237496c5ddc4Srjs         0,
237596c5ddc4Srjs         0,
237696c5ddc4Srjs         0,
237796c5ddc4Srjs         0,
237896c5ddc4Srjs         0,
237996c5ddc4Srjs         0,
238096c5ddc4Srjs         0,
238196c5ddc4Srjs         0,
238296c5ddc4Srjs         0,
238396c5ddc4Srjs         0,
238496c5ddc4Srjs         0,
238596c5ddc4Srjs         0,
238696c5ddc4Srjs         0,
238796c5ddc4Srjs         0,
238896c5ddc4Srjs         0,
238996c5ddc4Srjs      },
239096c5ddc4Srjs
239196c5ddc4Srjs      .num_filtered_states = 1,
239296c5ddc4Srjs      .table = (uint16_t []) {
239396c5ddc4Srjs
239496c5ddc4Srjs         13,
239596c5ddc4Srjs      },
239696c5ddc4Srjs   },
239796c5ddc4Srjs   [nir_search_op_u2u] = {
239896c5ddc4Srjs      .filter = (uint16_t []) {
239996c5ddc4Srjs         0,
240096c5ddc4Srjs         0,
240196c5ddc4Srjs         0,
240296c5ddc4Srjs         0,
240396c5ddc4Srjs         0,
240496c5ddc4Srjs         0,
240596c5ddc4Srjs         0,
240696c5ddc4Srjs         0,
240796c5ddc4Srjs         0,
240896c5ddc4Srjs         0,
240996c5ddc4Srjs         0,
241096c5ddc4Srjs         0,
241196c5ddc4Srjs         0,
241296c5ddc4Srjs         0,
241396c5ddc4Srjs         0,
241496c5ddc4Srjs         0,
241596c5ddc4Srjs         0,
241696c5ddc4Srjs         0,
241796c5ddc4Srjs         0,
241896c5ddc4Srjs         0,
241996c5ddc4Srjs         0,
242096c5ddc4Srjs         0,
242196c5ddc4Srjs         0,
242296c5ddc4Srjs         0,
242396c5ddc4Srjs         0,
242496c5ddc4Srjs         0,
242596c5ddc4Srjs         0,
242696c5ddc4Srjs         0,
242796c5ddc4Srjs         0,
242896c5ddc4Srjs         0,
242996c5ddc4Srjs      },
243096c5ddc4Srjs
243196c5ddc4Srjs      .num_filtered_states = 1,
243296c5ddc4Srjs      .table = (uint16_t []) {
243396c5ddc4Srjs
243496c5ddc4Srjs         14,
243596c5ddc4Srjs      },
243696c5ddc4Srjs   },
243796c5ddc4Srjs   [nir_search_op_i2i] = {
243896c5ddc4Srjs      .filter = (uint16_t []) {
243996c5ddc4Srjs         0,
244096c5ddc4Srjs         0,
244196c5ddc4Srjs         0,
244296c5ddc4Srjs         0,
244396c5ddc4Srjs         0,
244496c5ddc4Srjs         0,
244596c5ddc4Srjs         0,
244696c5ddc4Srjs         0,
244796c5ddc4Srjs         0,
244896c5ddc4Srjs         0,
244996c5ddc4Srjs         0,
245096c5ddc4Srjs         0,
245196c5ddc4Srjs         0,
245296c5ddc4Srjs         0,
245396c5ddc4Srjs         0,
245496c5ddc4Srjs         0,
245596c5ddc4Srjs         0,
245696c5ddc4Srjs         0,
245796c5ddc4Srjs         0,
245896c5ddc4Srjs         0,
245996c5ddc4Srjs         0,
246096c5ddc4Srjs         0,
246196c5ddc4Srjs         0,
246296c5ddc4Srjs         0,
246396c5ddc4Srjs         0,
246496c5ddc4Srjs         0,
246596c5ddc4Srjs         0,
246696c5ddc4Srjs         0,
246796c5ddc4Srjs         0,
246896c5ddc4Srjs         0,
246996c5ddc4Srjs      },
247096c5ddc4Srjs
247196c5ddc4Srjs      .num_filtered_states = 1,
247296c5ddc4Srjs      .table = (uint16_t []) {
247396c5ddc4Srjs
247496c5ddc4Srjs         15,
247596c5ddc4Srjs      },
247696c5ddc4Srjs   },
247796c5ddc4Srjs   [nir_search_op_f2f] = {
247896c5ddc4Srjs      .filter = (uint16_t []) {
247996c5ddc4Srjs         0,
248096c5ddc4Srjs         0,
248196c5ddc4Srjs         0,
248296c5ddc4Srjs         0,
248396c5ddc4Srjs         0,
248496c5ddc4Srjs         0,
248596c5ddc4Srjs         0,
248696c5ddc4Srjs         0,
248796c5ddc4Srjs         0,
248896c5ddc4Srjs         0,
248996c5ddc4Srjs         0,
249096c5ddc4Srjs         0,
249196c5ddc4Srjs         0,
249296c5ddc4Srjs         0,
249396c5ddc4Srjs         0,
249496c5ddc4Srjs         0,
249596c5ddc4Srjs         0,
249696c5ddc4Srjs         0,
249796c5ddc4Srjs         0,
249896c5ddc4Srjs         0,
249996c5ddc4Srjs         0,
250096c5ddc4Srjs         0,
250196c5ddc4Srjs         0,
250296c5ddc4Srjs         0,
250396c5ddc4Srjs         0,
250496c5ddc4Srjs         0,
250596c5ddc4Srjs         0,
250696c5ddc4Srjs         0,
250796c5ddc4Srjs         0,
250896c5ddc4Srjs         0,
250996c5ddc4Srjs      },
251096c5ddc4Srjs
251196c5ddc4Srjs      .num_filtered_states = 1,
251296c5ddc4Srjs      .table = (uint16_t []) {
251396c5ddc4Srjs
251496c5ddc4Srjs         16,
251596c5ddc4Srjs      },
251696c5ddc4Srjs   },
251796c5ddc4Srjs   [nir_search_op_i2f] = {
251896c5ddc4Srjs      .filter = (uint16_t []) {
251996c5ddc4Srjs         0,
252096c5ddc4Srjs         0,
252196c5ddc4Srjs         0,
252296c5ddc4Srjs         0,
252396c5ddc4Srjs         0,
252496c5ddc4Srjs         0,
252596c5ddc4Srjs         0,
252696c5ddc4Srjs         0,
252796c5ddc4Srjs         0,
252896c5ddc4Srjs         0,
252996c5ddc4Srjs         0,
253096c5ddc4Srjs         0,
253196c5ddc4Srjs         0,
253296c5ddc4Srjs         0,
253396c5ddc4Srjs         0,
253496c5ddc4Srjs         0,
253596c5ddc4Srjs         0,
253696c5ddc4Srjs         0,
253796c5ddc4Srjs         0,
253896c5ddc4Srjs         0,
253996c5ddc4Srjs         0,
254096c5ddc4Srjs         0,
254196c5ddc4Srjs         0,
254296c5ddc4Srjs         0,
254396c5ddc4Srjs         0,
254496c5ddc4Srjs         0,
254596c5ddc4Srjs         0,
254696c5ddc4Srjs         0,
254796c5ddc4Srjs         0,
254896c5ddc4Srjs         0,
254996c5ddc4Srjs      },
255096c5ddc4Srjs
255196c5ddc4Srjs      .num_filtered_states = 1,
255296c5ddc4Srjs      .table = (uint16_t []) {
255396c5ddc4Srjs
255496c5ddc4Srjs         17,
255596c5ddc4Srjs      },
255696c5ddc4Srjs   },
255796c5ddc4Srjs   [nir_search_op_u2f] = {
255896c5ddc4Srjs      .filter = (uint16_t []) {
255996c5ddc4Srjs         0,
256096c5ddc4Srjs         0,
256196c5ddc4Srjs         0,
256296c5ddc4Srjs         0,
256396c5ddc4Srjs         0,
256496c5ddc4Srjs         0,
256596c5ddc4Srjs         0,
256696c5ddc4Srjs         0,
256796c5ddc4Srjs         0,
256896c5ddc4Srjs         0,
256996c5ddc4Srjs         0,
257096c5ddc4Srjs         0,
257196c5ddc4Srjs         0,
257296c5ddc4Srjs         0,
257396c5ddc4Srjs         0,
257496c5ddc4Srjs         0,
257596c5ddc4Srjs         0,
257696c5ddc4Srjs         0,
257796c5ddc4Srjs         0,
257896c5ddc4Srjs         0,
257996c5ddc4Srjs         0,
258096c5ddc4Srjs         0,
258196c5ddc4Srjs         0,
258296c5ddc4Srjs         0,
258396c5ddc4Srjs         0,
258496c5ddc4Srjs         0,
258596c5ddc4Srjs         0,
258696c5ddc4Srjs         0,
258796c5ddc4Srjs         0,
258896c5ddc4Srjs         0,
258996c5ddc4Srjs      },
259096c5ddc4Srjs
259196c5ddc4Srjs      .num_filtered_states = 1,
259296c5ddc4Srjs      .table = (uint16_t []) {
259396c5ddc4Srjs
259496c5ddc4Srjs         18,
259596c5ddc4Srjs      },
259696c5ddc4Srjs   },
259796c5ddc4Srjs   [nir_search_op_f2i] = {
259896c5ddc4Srjs      .filter = (uint16_t []) {
259996c5ddc4Srjs         0,
260096c5ddc4Srjs         0,
260196c5ddc4Srjs         0,
260296c5ddc4Srjs         0,
260396c5ddc4Srjs         0,
260496c5ddc4Srjs         0,
260596c5ddc4Srjs         0,
260696c5ddc4Srjs         0,
260796c5ddc4Srjs         0,
260896c5ddc4Srjs         0,
260996c5ddc4Srjs         0,
261096c5ddc4Srjs         0,
261196c5ddc4Srjs         0,
261296c5ddc4Srjs         0,
261396c5ddc4Srjs         0,
261496c5ddc4Srjs         0,
261596c5ddc4Srjs         0,
261696c5ddc4Srjs         0,
261796c5ddc4Srjs         0,
261896c5ddc4Srjs         0,
261996c5ddc4Srjs         0,
262096c5ddc4Srjs         0,
262196c5ddc4Srjs         0,
262296c5ddc4Srjs         0,
262396c5ddc4Srjs         0,
262496c5ddc4Srjs         0,
262596c5ddc4Srjs         0,
262696c5ddc4Srjs         0,
262796c5ddc4Srjs         0,
262896c5ddc4Srjs         0,
262996c5ddc4Srjs      },
263096c5ddc4Srjs
263196c5ddc4Srjs      .num_filtered_states = 1,
263296c5ddc4Srjs      .table = (uint16_t []) {
263396c5ddc4Srjs
263496c5ddc4Srjs         19,
263596c5ddc4Srjs      },
263696c5ddc4Srjs   },
263796c5ddc4Srjs   [nir_search_op_f2u] = {
263896c5ddc4Srjs      .filter = (uint16_t []) {
263996c5ddc4Srjs         0,
264096c5ddc4Srjs         0,
264196c5ddc4Srjs         0,
264296c5ddc4Srjs         0,
264396c5ddc4Srjs         0,
264496c5ddc4Srjs         0,
264596c5ddc4Srjs         0,
264696c5ddc4Srjs         0,
264796c5ddc4Srjs         0,
264896c5ddc4Srjs         0,
264996c5ddc4Srjs         0,
265096c5ddc4Srjs         0,
265196c5ddc4Srjs         0,
265296c5ddc4Srjs         0,
265396c5ddc4Srjs         0,
265496c5ddc4Srjs         0,
265596c5ddc4Srjs         0,
265696c5ddc4Srjs         0,
265796c5ddc4Srjs         0,
265896c5ddc4Srjs         0,
265996c5ddc4Srjs         0,
266096c5ddc4Srjs         0,
266196c5ddc4Srjs         0,
266296c5ddc4Srjs         0,
266396c5ddc4Srjs         0,
266496c5ddc4Srjs         0,
266596c5ddc4Srjs         0,
266696c5ddc4Srjs         0,
266796c5ddc4Srjs         0,
266896c5ddc4Srjs         0,
266996c5ddc4Srjs      },
267096c5ddc4Srjs
267196c5ddc4Srjs      .num_filtered_states = 1,
267296c5ddc4Srjs      .table = (uint16_t []) {
267396c5ddc4Srjs
267496c5ddc4Srjs         20,
267596c5ddc4Srjs      },
267696c5ddc4Srjs   },
267796c5ddc4Srjs   [nir_op_fge] = {
267896c5ddc4Srjs      .filter = (uint16_t []) {
267996c5ddc4Srjs         0,
268096c5ddc4Srjs         1,
268196c5ddc4Srjs         0,
268296c5ddc4Srjs         0,
268396c5ddc4Srjs         0,
268496c5ddc4Srjs         0,
268596c5ddc4Srjs         0,
268696c5ddc4Srjs         0,
268796c5ddc4Srjs         0,
268896c5ddc4Srjs         0,
268996c5ddc4Srjs         0,
269096c5ddc4Srjs         0,
269196c5ddc4Srjs         0,
269296c5ddc4Srjs         0,
269396c5ddc4Srjs         0,
269496c5ddc4Srjs         0,
269596c5ddc4Srjs         0,
269696c5ddc4Srjs         0,
269796c5ddc4Srjs         0,
269896c5ddc4Srjs         0,
269996c5ddc4Srjs         0,
270096c5ddc4Srjs         0,
270196c5ddc4Srjs         0,
270296c5ddc4Srjs         0,
270396c5ddc4Srjs         0,
270496c5ddc4Srjs         0,
270596c5ddc4Srjs         0,
270696c5ddc4Srjs         0,
270796c5ddc4Srjs         0,
270896c5ddc4Srjs         0,
270996c5ddc4Srjs      },
271096c5ddc4Srjs
271196c5ddc4Srjs      .num_filtered_states = 2,
271296c5ddc4Srjs      .table = (uint16_t []) {
271396c5ddc4Srjs
271496c5ddc4Srjs         0,
271596c5ddc4Srjs         21,
271696c5ddc4Srjs         0,
271796c5ddc4Srjs         21,
271896c5ddc4Srjs      },
271996c5ddc4Srjs   },
272096c5ddc4Srjs   [nir_op_fge32] = {
272196c5ddc4Srjs      .filter = (uint16_t []) {
272296c5ddc4Srjs         0,
272396c5ddc4Srjs         1,
272496c5ddc4Srjs         0,
272596c5ddc4Srjs         0,
272696c5ddc4Srjs         0,
272796c5ddc4Srjs         0,
272896c5ddc4Srjs         0,
272996c5ddc4Srjs         0,
273096c5ddc4Srjs         0,
273196c5ddc4Srjs         0,
273296c5ddc4Srjs         0,
273396c5ddc4Srjs         0,
273496c5ddc4Srjs         0,
273596c5ddc4Srjs         0,
273696c5ddc4Srjs         0,
273796c5ddc4Srjs         0,
273896c5ddc4Srjs         0,
273996c5ddc4Srjs         0,
274096c5ddc4Srjs         0,
274196c5ddc4Srjs         0,
274296c5ddc4Srjs         0,
274396c5ddc4Srjs         0,
274496c5ddc4Srjs         0,
274596c5ddc4Srjs         0,
274696c5ddc4Srjs         0,
274796c5ddc4Srjs         0,
274896c5ddc4Srjs         0,
274996c5ddc4Srjs         0,
275096c5ddc4Srjs         0,
275196c5ddc4Srjs         0,
275296c5ddc4Srjs      },
275396c5ddc4Srjs
275496c5ddc4Srjs      .num_filtered_states = 2,
275596c5ddc4Srjs      .table = (uint16_t []) {
275696c5ddc4Srjs
275796c5ddc4Srjs         0,
275896c5ddc4Srjs         22,
275996c5ddc4Srjs         0,
276096c5ddc4Srjs         22,
276196c5ddc4Srjs      },
276296c5ddc4Srjs   },
276396c5ddc4Srjs   [nir_op_ige32] = {
276496c5ddc4Srjs      .filter = (uint16_t []) {
276596c5ddc4Srjs         0,
276696c5ddc4Srjs         1,
276796c5ddc4Srjs         0,
276896c5ddc4Srjs         0,
276996c5ddc4Srjs         0,
277096c5ddc4Srjs         0,
277196c5ddc4Srjs         0,
277296c5ddc4Srjs         0,
277396c5ddc4Srjs         0,
277496c5ddc4Srjs         0,
277596c5ddc4Srjs         0,
277696c5ddc4Srjs         0,
277796c5ddc4Srjs         0,
277896c5ddc4Srjs         0,
277996c5ddc4Srjs         0,
278096c5ddc4Srjs         0,
278196c5ddc4Srjs         0,
278296c5ddc4Srjs         0,
278396c5ddc4Srjs         0,
278496c5ddc4Srjs         0,
278596c5ddc4Srjs         0,
278696c5ddc4Srjs         0,
278796c5ddc4Srjs         0,
278896c5ddc4Srjs         0,
278996c5ddc4Srjs         0,
279096c5ddc4Srjs         0,
279196c5ddc4Srjs         0,
279296c5ddc4Srjs         0,
279396c5ddc4Srjs         0,
279496c5ddc4Srjs         0,
279596c5ddc4Srjs      },
279696c5ddc4Srjs
279796c5ddc4Srjs      .num_filtered_states = 2,
279896c5ddc4Srjs      .table = (uint16_t []) {
279996c5ddc4Srjs
280096c5ddc4Srjs         0,
280196c5ddc4Srjs         23,
280296c5ddc4Srjs         0,
280396c5ddc4Srjs         23,
280496c5ddc4Srjs      },
280596c5ddc4Srjs   },
280696c5ddc4Srjs   [nir_op_uge32] = {
280796c5ddc4Srjs      .filter = (uint16_t []) {
280896c5ddc4Srjs         0,
280996c5ddc4Srjs         1,
281096c5ddc4Srjs         0,
281196c5ddc4Srjs         0,
281296c5ddc4Srjs         0,
281396c5ddc4Srjs         0,
281496c5ddc4Srjs         0,
281596c5ddc4Srjs         0,
281696c5ddc4Srjs         0,
281796c5ddc4Srjs         0,
281896c5ddc4Srjs         0,
281996c5ddc4Srjs         0,
282096c5ddc4Srjs         0,
282196c5ddc4Srjs         0,
282296c5ddc4Srjs         0,
282396c5ddc4Srjs         0,
282496c5ddc4Srjs         0,
282596c5ddc4Srjs         0,
282696c5ddc4Srjs         0,
282796c5ddc4Srjs         0,
282896c5ddc4Srjs         0,
282996c5ddc4Srjs         0,
283096c5ddc4Srjs         0,
283196c5ddc4Srjs         0,
283296c5ddc4Srjs         0,
283396c5ddc4Srjs         0,
283496c5ddc4Srjs         0,
283596c5ddc4Srjs         0,
283696c5ddc4Srjs         0,
283796c5ddc4Srjs         0,
283896c5ddc4Srjs      },
283996c5ddc4Srjs
284096c5ddc4Srjs      .num_filtered_states = 2,
284196c5ddc4Srjs      .table = (uint16_t []) {
284296c5ddc4Srjs
284396c5ddc4Srjs         0,
284496c5ddc4Srjs         24,
284596c5ddc4Srjs         0,
284696c5ddc4Srjs         24,
284796c5ddc4Srjs      },
284896c5ddc4Srjs   },
284996c5ddc4Srjs   [nir_op_flt32] = {
285096c5ddc4Srjs      .filter = (uint16_t []) {
285196c5ddc4Srjs         0,
285296c5ddc4Srjs         1,
285396c5ddc4Srjs         0,
285496c5ddc4Srjs         0,
285596c5ddc4Srjs         0,
285696c5ddc4Srjs         0,
285796c5ddc4Srjs         0,
285896c5ddc4Srjs         0,
285996c5ddc4Srjs         0,
286096c5ddc4Srjs         0,
286196c5ddc4Srjs         0,
286296c5ddc4Srjs         0,
286396c5ddc4Srjs         0,
286496c5ddc4Srjs         0,
286596c5ddc4Srjs         0,
286696c5ddc4Srjs         0,
286796c5ddc4Srjs         0,
286896c5ddc4Srjs         0,
286996c5ddc4Srjs         0,
287096c5ddc4Srjs         0,
287196c5ddc4Srjs         0,
287296c5ddc4Srjs         0,
287396c5ddc4Srjs         0,
287496c5ddc4Srjs         0,
287596c5ddc4Srjs         0,
287696c5ddc4Srjs         0,
287796c5ddc4Srjs         0,
287896c5ddc4Srjs         0,
287996c5ddc4Srjs         0,
288096c5ddc4Srjs         0,
288196c5ddc4Srjs      },
288296c5ddc4Srjs
288396c5ddc4Srjs      .num_filtered_states = 2,
288496c5ddc4Srjs      .table = (uint16_t []) {
288596c5ddc4Srjs
288696c5ddc4Srjs         0,
288796c5ddc4Srjs         0,
288896c5ddc4Srjs         25,
288996c5ddc4Srjs         25,
289096c5ddc4Srjs      },
289196c5ddc4Srjs   },
289296c5ddc4Srjs   [nir_op_ilt32] = {
289396c5ddc4Srjs      .filter = (uint16_t []) {
289496c5ddc4Srjs         0,
289596c5ddc4Srjs         1,
289696c5ddc4Srjs         0,
289796c5ddc4Srjs         0,
289896c5ddc4Srjs         0,
289996c5ddc4Srjs         0,
290096c5ddc4Srjs         0,
290196c5ddc4Srjs         0,
290296c5ddc4Srjs         0,
290396c5ddc4Srjs         0,
290496c5ddc4Srjs         0,
290596c5ddc4Srjs         0,
290696c5ddc4Srjs         0,
290796c5ddc4Srjs         0,
290896c5ddc4Srjs         0,
290996c5ddc4Srjs         0,
291096c5ddc4Srjs         0,
291196c5ddc4Srjs         0,
291296c5ddc4Srjs         0,
291396c5ddc4Srjs         0,
291496c5ddc4Srjs         0,
291596c5ddc4Srjs         0,
291696c5ddc4Srjs         0,
291796c5ddc4Srjs         0,
291896c5ddc4Srjs         0,
291996c5ddc4Srjs         0,
292096c5ddc4Srjs         0,
292196c5ddc4Srjs         0,
292296c5ddc4Srjs         0,
292396c5ddc4Srjs         0,
292496c5ddc4Srjs      },
292596c5ddc4Srjs
292696c5ddc4Srjs      .num_filtered_states = 2,
292796c5ddc4Srjs      .table = (uint16_t []) {
292896c5ddc4Srjs
292996c5ddc4Srjs         0,
293096c5ddc4Srjs         0,
293196c5ddc4Srjs         26,
293296c5ddc4Srjs         26,
293396c5ddc4Srjs      },
293496c5ddc4Srjs   },
293596c5ddc4Srjs   [nir_op_ult32] = {
293696c5ddc4Srjs      .filter = (uint16_t []) {
293796c5ddc4Srjs         0,
293896c5ddc4Srjs         1,
293996c5ddc4Srjs         0,
294096c5ddc4Srjs         0,
294196c5ddc4Srjs         0,
294296c5ddc4Srjs         0,
294396c5ddc4Srjs         0,
294496c5ddc4Srjs         0,
294596c5ddc4Srjs         0,
294696c5ddc4Srjs         0,
294796c5ddc4Srjs         0,
294896c5ddc4Srjs         0,
294996c5ddc4Srjs         0,
295096c5ddc4Srjs         0,
295196c5ddc4Srjs         0,
295296c5ddc4Srjs         0,
295396c5ddc4Srjs         0,
295496c5ddc4Srjs         0,
295596c5ddc4Srjs         0,
295696c5ddc4Srjs         0,
295796c5ddc4Srjs         0,
295896c5ddc4Srjs         0,
295996c5ddc4Srjs         0,
296096c5ddc4Srjs         0,
296196c5ddc4Srjs         0,
296296c5ddc4Srjs         0,
296396c5ddc4Srjs         0,
296496c5ddc4Srjs         0,
296596c5ddc4Srjs         0,
296696c5ddc4Srjs         0,
296796c5ddc4Srjs      },
296896c5ddc4Srjs
296996c5ddc4Srjs      .num_filtered_states = 2,
297096c5ddc4Srjs      .table = (uint16_t []) {
297196c5ddc4Srjs
297296c5ddc4Srjs         0,
297396c5ddc4Srjs         0,
297496c5ddc4Srjs         27,
297596c5ddc4Srjs         27,
297696c5ddc4Srjs      },
297796c5ddc4Srjs   },
297896c5ddc4Srjs};
297996c5ddc4Srjs
298096c5ddc4Srjsconst struct transform *midgard_nir_lower_algebraic_late_transforms[] = {
298196c5ddc4Srjs   NULL,
298296c5ddc4Srjs   NULL,
298396c5ddc4Srjs   midgard_nir_lower_algebraic_late_state2_xforms,
298496c5ddc4Srjs   midgard_nir_lower_algebraic_late_state3_xforms,
298596c5ddc4Srjs   midgard_nir_lower_algebraic_late_state4_xforms,
298696c5ddc4Srjs   midgard_nir_lower_algebraic_late_state5_xforms,
298796c5ddc4Srjs   midgard_nir_lower_algebraic_late_state6_xforms,
298896c5ddc4Srjs   NULL,
298996c5ddc4Srjs   midgard_nir_lower_algebraic_late_state8_xforms,
299096c5ddc4Srjs   midgard_nir_lower_algebraic_late_state9_xforms,
299196c5ddc4Srjs   midgard_nir_lower_algebraic_late_state10_xforms,
299296c5ddc4Srjs   midgard_nir_lower_algebraic_late_state11_xforms,
299396c5ddc4Srjs   midgard_nir_lower_algebraic_late_state12_xforms,
299496c5ddc4Srjs   midgard_nir_lower_algebraic_late_state13_xforms,
299596c5ddc4Srjs   midgard_nir_lower_algebraic_late_state14_xforms,
299696c5ddc4Srjs   midgard_nir_lower_algebraic_late_state15_xforms,
299796c5ddc4Srjs   midgard_nir_lower_algebraic_late_state16_xforms,
299896c5ddc4Srjs   midgard_nir_lower_algebraic_late_state17_xforms,
299996c5ddc4Srjs   midgard_nir_lower_algebraic_late_state18_xforms,
300096c5ddc4Srjs   midgard_nir_lower_algebraic_late_state19_xforms,
300196c5ddc4Srjs   midgard_nir_lower_algebraic_late_state20_xforms,
300296c5ddc4Srjs   midgard_nir_lower_algebraic_late_state21_xforms,
300396c5ddc4Srjs   midgard_nir_lower_algebraic_late_state22_xforms,
300496c5ddc4Srjs   midgard_nir_lower_algebraic_late_state23_xforms,
300596c5ddc4Srjs   midgard_nir_lower_algebraic_late_state24_xforms,
300696c5ddc4Srjs   midgard_nir_lower_algebraic_late_state25_xforms,
300796c5ddc4Srjs   midgard_nir_lower_algebraic_late_state26_xforms,
300896c5ddc4Srjs   midgard_nir_lower_algebraic_late_state27_xforms,
300996c5ddc4Srjs   midgard_nir_lower_algebraic_late_state28_xforms,
301096c5ddc4Srjs   midgard_nir_lower_algebraic_late_state29_xforms,
301196c5ddc4Srjs};
301296c5ddc4Srjs
301396c5ddc4Srjsconst uint16_t midgard_nir_lower_algebraic_late_transform_counts[] = {
301496c5ddc4Srjs   0,
301596c5ddc4Srjs   0,
301696c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state2_xforms),
301796c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state3_xforms),
301896c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state4_xforms),
301996c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state5_xforms),
302096c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state6_xforms),
302196c5ddc4Srjs   0,
302296c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state8_xforms),
302396c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state9_xforms),
302496c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state10_xforms),
302596c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state11_xforms),
302696c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state12_xforms),
302796c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state13_xforms),
302896c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state14_xforms),
302996c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state15_xforms),
303096c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state16_xforms),
303196c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state17_xforms),
303296c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state18_xforms),
303396c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state19_xforms),
303496c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state20_xforms),
303596c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state21_xforms),
303696c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state22_xforms),
303796c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state23_xforms),
303896c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state24_xforms),
303996c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state25_xforms),
304096c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state26_xforms),
304196c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state27_xforms),
304296c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state28_xforms),
304396c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_lower_algebraic_late_state29_xforms),
304496c5ddc4Srjs};
304596c5ddc4Srjs
304696c5ddc4Srjsbool
304796c5ddc4Srjsmidgard_nir_lower_algebraic_late(nir_shader *shader)
304896c5ddc4Srjs{
304996c5ddc4Srjs   bool progress = false;
305096c5ddc4Srjs   bool condition_flags[1];
305196c5ddc4Srjs   const nir_shader_compiler_options *options = shader->options;
305296c5ddc4Srjs   const shader_info *info = &shader->info;
305396c5ddc4Srjs   (void) options;
305496c5ddc4Srjs   (void) info;
305596c5ddc4Srjs
305696c5ddc4Srjs   condition_flags[0] = true;
305796c5ddc4Srjs
305896c5ddc4Srjs   nir_foreach_function(function, shader) {
305996c5ddc4Srjs      if (function->impl) {
306096c5ddc4Srjs         progress |= nir_algebraic_impl(function->impl, condition_flags,
306196c5ddc4Srjs                                        midgard_nir_lower_algebraic_late_transforms,
306296c5ddc4Srjs                                        midgard_nir_lower_algebraic_late_transform_counts,
306396c5ddc4Srjs                                        midgard_nir_lower_algebraic_late_table);
306496c5ddc4Srjs      }
306596c5ddc4Srjs   }
306696c5ddc4Srjs
306796c5ddc4Srjs   return progress;
306896c5ddc4Srjs}
306996c5ddc4Srjs
307096c5ddc4Srjs
307196c5ddc4Srjs#include "nir.h"
307296c5ddc4Srjs#include "nir_builder.h"
307396c5ddc4Srjs#include "nir_search.h"
307496c5ddc4Srjs#include "nir_search_helpers.h"
307596c5ddc4Srjs
307696c5ddc4Srjs/* What follows is NIR algebraic transform code for the following 2
307796c5ddc4Srjs * transforms:
307896c5ddc4Srjs *    ('fsin', 'a') => ('fsin', ('fdiv', 'a', 3.141592653589793))
307996c5ddc4Srjs *    ('fcos', 'a') => ('fcos', ('fdiv', 'a', 3.141592653589793))
308096c5ddc4Srjs */
308196c5ddc4Srjs
308296c5ddc4Srjs
308396c5ddc4Srjs   static const nir_search_variable search55_0 = {
308496c5ddc4Srjs   { nir_search_value_variable, -1 },
308596c5ddc4Srjs   0, /* a */
308696c5ddc4Srjs   false,
308796c5ddc4Srjs   nir_type_invalid,
308896c5ddc4Srjs   NULL,
308996c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
309096c5ddc4Srjs};
309196c5ddc4Srjsstatic const nir_search_expression search55 = {
309296c5ddc4Srjs   { nir_search_value_expression, -1 },
309396c5ddc4Srjs   false, false,
309496c5ddc4Srjs   -1, 0,
309596c5ddc4Srjs   nir_op_fsin,
309696c5ddc4Srjs   { &search55_0.value },
309796c5ddc4Srjs   NULL,
309896c5ddc4Srjs};
309996c5ddc4Srjs
310096c5ddc4Srjs   /* replace55_0_0 -> search55_0 in the cache */
310196c5ddc4Srjs
310296c5ddc4Srjsstatic const nir_search_constant replace55_0_1 = {
310396c5ddc4Srjs   { nir_search_value_constant, -1 },
310496c5ddc4Srjs   nir_type_float, { 0x400921fb54442d18 /* 3.141592653589793 */ },
310596c5ddc4Srjs};
310696c5ddc4Srjsstatic const nir_search_expression replace55_0 = {
310796c5ddc4Srjs   { nir_search_value_expression, -1 },
310896c5ddc4Srjs   false, false,
310996c5ddc4Srjs   -1, 0,
311096c5ddc4Srjs   nir_op_fdiv,
311196c5ddc4Srjs   { &search55_0.value, &replace55_0_1.value },
311296c5ddc4Srjs   NULL,
311396c5ddc4Srjs};
311496c5ddc4Srjsstatic const nir_search_expression replace55 = {
311596c5ddc4Srjs   { nir_search_value_expression, -1 },
311696c5ddc4Srjs   false, false,
311796c5ddc4Srjs   -1, 0,
311896c5ddc4Srjs   nir_op_fsin,
311996c5ddc4Srjs   { &replace55_0.value },
312096c5ddc4Srjs   NULL,
312196c5ddc4Srjs};
312296c5ddc4Srjs
312396c5ddc4Srjs   /* search56_0 -> search55_0 in the cache */
312496c5ddc4Srjsstatic const nir_search_expression search56 = {
312596c5ddc4Srjs   { nir_search_value_expression, -1 },
312696c5ddc4Srjs   false, false,
312796c5ddc4Srjs   -1, 0,
312896c5ddc4Srjs   nir_op_fcos,
312996c5ddc4Srjs   { &search55_0.value },
313096c5ddc4Srjs   NULL,
313196c5ddc4Srjs};
313296c5ddc4Srjs
313396c5ddc4Srjs   /* replace56_0_0 -> search55_0 in the cache */
313496c5ddc4Srjs
313596c5ddc4Srjs/* replace56_0_1 -> replace55_0_1 in the cache */
313696c5ddc4Srjs/* replace56_0 -> replace55_0 in the cache */
313796c5ddc4Srjsstatic const nir_search_expression replace56 = {
313896c5ddc4Srjs   { nir_search_value_expression, -1 },
313996c5ddc4Srjs   false, false,
314096c5ddc4Srjs   -1, 0,
314196c5ddc4Srjs   nir_op_fcos,
314296c5ddc4Srjs   { &replace55_0.value },
314396c5ddc4Srjs   NULL,
314496c5ddc4Srjs};
314596c5ddc4Srjs
314696c5ddc4Srjs
314796c5ddc4Srjsstatic const struct transform midgard_nir_scale_trig_state2_xforms[] = {
314896c5ddc4Srjs  { &search55, &replace55.value, 0 },
314996c5ddc4Srjs};
315096c5ddc4Srjsstatic const struct transform midgard_nir_scale_trig_state3_xforms[] = {
315196c5ddc4Srjs  { &search56, &replace56.value, 0 },
315296c5ddc4Srjs};
315396c5ddc4Srjs
315496c5ddc4Srjsstatic const struct per_op_table midgard_nir_scale_trig_table[nir_num_search_ops] = {
315596c5ddc4Srjs   [nir_op_fsin] = {
315696c5ddc4Srjs      .filter = (uint16_t []) {
315796c5ddc4Srjs         0,
315896c5ddc4Srjs         0,
315996c5ddc4Srjs         0,
316096c5ddc4Srjs         0,
316196c5ddc4Srjs      },
316296c5ddc4Srjs
316396c5ddc4Srjs      .num_filtered_states = 1,
316496c5ddc4Srjs      .table = (uint16_t []) {
316596c5ddc4Srjs
316696c5ddc4Srjs         2,
316796c5ddc4Srjs      },
316896c5ddc4Srjs   },
316996c5ddc4Srjs   [nir_op_fcos] = {
317096c5ddc4Srjs      .filter = (uint16_t []) {
317196c5ddc4Srjs         0,
317296c5ddc4Srjs         0,
317396c5ddc4Srjs         0,
317496c5ddc4Srjs         0,
317596c5ddc4Srjs      },
317696c5ddc4Srjs
317796c5ddc4Srjs      .num_filtered_states = 1,
317896c5ddc4Srjs      .table = (uint16_t []) {
317996c5ddc4Srjs
318096c5ddc4Srjs         3,
318196c5ddc4Srjs      },
318296c5ddc4Srjs   },
318396c5ddc4Srjs};
318496c5ddc4Srjs
318596c5ddc4Srjsconst struct transform *midgard_nir_scale_trig_transforms[] = {
318696c5ddc4Srjs   NULL,
318796c5ddc4Srjs   NULL,
318896c5ddc4Srjs   midgard_nir_scale_trig_state2_xforms,
318996c5ddc4Srjs   midgard_nir_scale_trig_state3_xforms,
319096c5ddc4Srjs};
319196c5ddc4Srjs
319296c5ddc4Srjsconst uint16_t midgard_nir_scale_trig_transform_counts[] = {
319396c5ddc4Srjs   0,
319496c5ddc4Srjs   0,
319596c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_scale_trig_state2_xforms),
319696c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_scale_trig_state3_xforms),
319796c5ddc4Srjs};
319896c5ddc4Srjs
319996c5ddc4Srjsbool
320096c5ddc4Srjsmidgard_nir_scale_trig(nir_shader *shader)
320196c5ddc4Srjs{
320296c5ddc4Srjs   bool progress = false;
320396c5ddc4Srjs   bool condition_flags[1];
320496c5ddc4Srjs   const nir_shader_compiler_options *options = shader->options;
320596c5ddc4Srjs   const shader_info *info = &shader->info;
320696c5ddc4Srjs   (void) options;
320796c5ddc4Srjs   (void) info;
320896c5ddc4Srjs
320996c5ddc4Srjs   condition_flags[0] = true;
321096c5ddc4Srjs
321196c5ddc4Srjs   nir_foreach_function(function, shader) {
321296c5ddc4Srjs      if (function->impl) {
321396c5ddc4Srjs         progress |= nir_algebraic_impl(function->impl, condition_flags,
321496c5ddc4Srjs                                        midgard_nir_scale_trig_transforms,
321596c5ddc4Srjs                                        midgard_nir_scale_trig_transform_counts,
321696c5ddc4Srjs                                        midgard_nir_scale_trig_table);
321796c5ddc4Srjs      }
321896c5ddc4Srjs   }
321996c5ddc4Srjs
322096c5ddc4Srjs   return progress;
322196c5ddc4Srjs}
322296c5ddc4Srjs
322396c5ddc4Srjs
322496c5ddc4Srjs#include "nir.h"
322596c5ddc4Srjs#include "nir_builder.h"
322696c5ddc4Srjs#include "nir_search.h"
322796c5ddc4Srjs#include "nir_search_helpers.h"
322896c5ddc4Srjs
322996c5ddc4Srjs/* What follows is NIR algebraic transform code for the following 1
323096c5ddc4Srjs * transforms:
323196c5ddc4Srjs *    ('inot', ('inot', 'a')) => a
323296c5ddc4Srjs */
323396c5ddc4Srjs
323496c5ddc4Srjs
323596c5ddc4Srjs   static const nir_search_variable search57_0_0 = {
323696c5ddc4Srjs   { nir_search_value_variable, -1 },
323796c5ddc4Srjs   0, /* a */
323896c5ddc4Srjs   false,
323996c5ddc4Srjs   nir_type_invalid,
324096c5ddc4Srjs   NULL,
324196c5ddc4Srjs   {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
324296c5ddc4Srjs};
324396c5ddc4Srjsstatic const nir_search_expression search57_0 = {
324496c5ddc4Srjs   { nir_search_value_expression, -1 },
324596c5ddc4Srjs   false, false,
324696c5ddc4Srjs   -1, 0,
324796c5ddc4Srjs   nir_op_inot,
324896c5ddc4Srjs   { &search57_0_0.value },
324996c5ddc4Srjs   NULL,
325096c5ddc4Srjs};
325196c5ddc4Srjsstatic const nir_search_expression search57 = {
325296c5ddc4Srjs   { nir_search_value_expression, -1 },
325396c5ddc4Srjs   false, false,
325496c5ddc4Srjs   -1, 0,
325596c5ddc4Srjs   nir_op_inot,
325696c5ddc4Srjs   { &search57_0.value },
325796c5ddc4Srjs   NULL,
325896c5ddc4Srjs};
325996c5ddc4Srjs
326096c5ddc4Srjs   /* replace57 -> search57_0_0 in the cache */
326196c5ddc4Srjs
326296c5ddc4Srjs
326396c5ddc4Srjsstatic const struct transform midgard_nir_cancel_inot_state3_xforms[] = {
326496c5ddc4Srjs  { &search57, &search57_0_0.value, 0 },
326596c5ddc4Srjs};
326696c5ddc4Srjs
326796c5ddc4Srjsstatic const struct per_op_table midgard_nir_cancel_inot_table[nir_num_search_ops] = {
326896c5ddc4Srjs   [nir_op_inot] = {
326996c5ddc4Srjs      .filter = (uint16_t []) {
327096c5ddc4Srjs         0,
327196c5ddc4Srjs         0,
327296c5ddc4Srjs         1,
327396c5ddc4Srjs         1,
327496c5ddc4Srjs      },
327596c5ddc4Srjs
327696c5ddc4Srjs      .num_filtered_states = 2,
327796c5ddc4Srjs      .table = (uint16_t []) {
327896c5ddc4Srjs
327996c5ddc4Srjs         2,
328096c5ddc4Srjs         3,
328196c5ddc4Srjs      },
328296c5ddc4Srjs   },
328396c5ddc4Srjs};
328496c5ddc4Srjs
328596c5ddc4Srjsconst struct transform *midgard_nir_cancel_inot_transforms[] = {
328696c5ddc4Srjs   NULL,
328796c5ddc4Srjs   NULL,
328896c5ddc4Srjs   NULL,
328996c5ddc4Srjs   midgard_nir_cancel_inot_state3_xforms,
329096c5ddc4Srjs};
329196c5ddc4Srjs
329296c5ddc4Srjsconst uint16_t midgard_nir_cancel_inot_transform_counts[] = {
329396c5ddc4Srjs   0,
329496c5ddc4Srjs   0,
329596c5ddc4Srjs   0,
329696c5ddc4Srjs   (uint16_t)ARRAY_SIZE(midgard_nir_cancel_inot_state3_xforms),
329796c5ddc4Srjs};
329896c5ddc4Srjs
329996c5ddc4Srjsbool
330096c5ddc4Srjsmidgard_nir_cancel_inot(nir_shader *shader)
330196c5ddc4Srjs{
330296c5ddc4Srjs   bool progress = false;
330396c5ddc4Srjs   bool condition_flags[1];
330496c5ddc4Srjs   const nir_shader_compiler_options *options = shader->options;
330596c5ddc4Srjs   const shader_info *info = &shader->info;
330696c5ddc4Srjs   (void) options;
330796c5ddc4Srjs   (void) info;
330896c5ddc4Srjs
330996c5ddc4Srjs   condition_flags[0] = true;
331096c5ddc4Srjs
331196c5ddc4Srjs   nir_foreach_function(function, shader) {
331296c5ddc4Srjs      if (function->impl) {
331396c5ddc4Srjs         progress |= nir_algebraic_impl(function->impl, condition_flags,
331496c5ddc4Srjs                                        midgard_nir_cancel_inot_transforms,
331596c5ddc4Srjs                                        midgard_nir_cancel_inot_transform_counts,
331696c5ddc4Srjs                                        midgard_nir_cancel_inot_table);
331796c5ddc4Srjs      }
331896c5ddc4Srjs   }
331996c5ddc4Srjs
332096c5ddc4Srjs   return progress;
332196c5ddc4Srjs}
332296c5ddc4Srjs
3323