Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1.  
  2. #include "nir.h"
  3. #include "nir_search.h"
  4.  
  5. #ifndef NIR_OPT_ALGEBRAIC_STRUCT_DEFS
  6. #define NIR_OPT_ALGEBRAIC_STRUCT_DEFS
  7.  
  8. struct transform {
  9.    const nir_search_expression *search;
  10.    const nir_search_value *replace;
  11.    unsigned condition_offset;
  12. };
  13.  
  14. struct opt_state {
  15.    void *mem_ctx;
  16.    bool progress;
  17.    const bool *condition_flags;
  18. };
  19.  
  20. #endif
  21.  
  22.    
  23. static const nir_search_variable search66_0 = {
  24.    { nir_search_value_variable },
  25.    0, /* a */
  26.    false,
  27.    nir_type_bool,
  28. };
  29.  
  30. static const nir_search_constant search66_1 = {
  31.    { nir_search_value_constant },
  32.    { 0x3f800000 /* 1.0 */ },
  33. };
  34. static const nir_search_expression search66 = {
  35.    { nir_search_value_expression },
  36.    nir_op_iand,
  37.    { &search66_0.value, &search66_1.value },
  38. };
  39.    
  40. static const nir_search_variable replace66_0 = {
  41.    { nir_search_value_variable },
  42.    0, /* a */
  43.    false,
  44.    nir_type_invalid,
  45. };
  46. static const nir_search_expression replace66 = {
  47.    { nir_search_value_expression },
  48.    nir_op_b2f,
  49.    { &replace66_0.value },
  50. };
  51.    
  52. static const nir_search_variable search76_0 = {
  53.    { nir_search_value_variable },
  54.    0, /* a */
  55.    false,
  56.    nir_type_invalid,
  57. };
  58.  
  59. static const nir_search_variable search76_1 = {
  60.    { nir_search_value_variable },
  61.    0, /* a */
  62.    false,
  63.    nir_type_invalid,
  64. };
  65. static const nir_search_expression search76 = {
  66.    { nir_search_value_expression },
  67.    nir_op_iand,
  68.    { &search76_0.value, &search76_1.value },
  69. };
  70.    
  71. static const nir_search_variable replace76 = {
  72.    { nir_search_value_variable },
  73.    0, /* a */
  74.    false,
  75.    nir_type_invalid,
  76. };
  77.    
  78. static const nir_search_variable search77_0 = {
  79.    { nir_search_value_variable },
  80.    0, /* a */
  81.    false,
  82.    nir_type_invalid,
  83. };
  84.  
  85. static const nir_search_constant search77_1 = {
  86.    { nir_search_value_constant },
  87.    { 0x0 /* 0 */ },
  88. };
  89. static const nir_search_expression search77 = {
  90.    { nir_search_value_expression },
  91.    nir_op_iand,
  92.    { &search77_0.value, &search77_1.value },
  93. };
  94.    
  95. static const nir_search_constant replace77 = {
  96.    { nir_search_value_constant },
  97.    { 0x0 /* 0 */ },
  98. };
  99.    
  100. static const nir_search_variable search83_0_0 = {
  101.    { nir_search_value_variable },
  102.    0, /* a */
  103.    false,
  104.    nir_type_invalid,
  105. };
  106. static const nir_search_expression search83_0 = {
  107.    { nir_search_value_expression },
  108.    nir_op_inot,
  109.    { &search83_0_0.value },
  110. };
  111.  
  112. static const nir_search_variable search83_1_0 = {
  113.    { nir_search_value_variable },
  114.    1, /* b */
  115.    false,
  116.    nir_type_invalid,
  117. };
  118. static const nir_search_expression search83_1 = {
  119.    { nir_search_value_expression },
  120.    nir_op_inot,
  121.    { &search83_1_0.value },
  122. };
  123. static const nir_search_expression search83 = {
  124.    { nir_search_value_expression },
  125.    nir_op_iand,
  126.    { &search83_0.value, &search83_1.value },
  127. };
  128.    
  129. static const nir_search_variable replace83_0_0 = {
  130.    { nir_search_value_variable },
  131.    0, /* a */
  132.    false,
  133.    nir_type_invalid,
  134. };
  135.  
  136. static const nir_search_variable replace83_0_1 = {
  137.    { nir_search_value_variable },
  138.    1, /* b */
  139.    false,
  140.    nir_type_invalid,
  141. };
  142. static const nir_search_expression replace83_0 = {
  143.    { nir_search_value_expression },
  144.    nir_op_ior,
  145.    { &replace83_0_0.value, &replace83_0_1.value },
  146. };
  147. static const nir_search_expression replace83 = {
  148.    { nir_search_value_expression },
  149.    nir_op_inot,
  150.    { &replace83_0.value },
  151. };
  152.  
  153. static const struct transform nir_opt_algebraic_iand_xforms[] = {
  154.    { &search66, &replace66.value, 0 },
  155.    { &search76, &replace76.value, 0 },
  156.    { &search77, &replace77.value, 0 },
  157.    { &search83, &replace83.value, 0 },
  158. };
  159.    
  160. static const nir_search_variable search81_0 = {
  161.    { nir_search_value_variable },
  162.    0, /* a */
  163.    false,
  164.    nir_type_invalid,
  165. };
  166.  
  167. static const nir_search_variable search81_1 = {
  168.    { nir_search_value_variable },
  169.    0, /* a */
  170.    false,
  171.    nir_type_invalid,
  172. };
  173. static const nir_search_expression search81 = {
  174.    { nir_search_value_expression },
  175.    nir_op_ixor,
  176.    { &search81_0.value, &search81_1.value },
  177. };
  178.    
  179. static const nir_search_constant replace81 = {
  180.    { nir_search_value_constant },
  181.    { 0x0 /* 0 */ },
  182. };
  183.  
  184. static const struct transform nir_opt_algebraic_ixor_xforms[] = {
  185.    { &search81, &replace81.value, 0 },
  186. };
  187.    
  188. static const nir_search_variable search61_0 = {
  189.    { nir_search_value_variable },
  190.    0, /* a */
  191.    false,
  192.    nir_type_invalid,
  193. };
  194.  
  195. static const nir_search_variable search61_1 = {
  196.    { nir_search_value_variable },
  197.    1, /* b */
  198.    false,
  199.    nir_type_invalid,
  200. };
  201. static const nir_search_expression search61 = {
  202.    { nir_search_value_expression },
  203.    nir_op_seq,
  204.    { &search61_0.value, &search61_1.value },
  205. };
  206.    
  207. static const nir_search_variable replace61_0_0 = {
  208.    { nir_search_value_variable },
  209.    0, /* a */
  210.    false,
  211.    nir_type_invalid,
  212. };
  213.  
  214. static const nir_search_variable replace61_0_1 = {
  215.    { nir_search_value_variable },
  216.    1, /* b */
  217.    false,
  218.    nir_type_invalid,
  219. };
  220. static const nir_search_expression replace61_0 = {
  221.    { nir_search_value_expression },
  222.    nir_op_feq,
  223.    { &replace61_0_0.value, &replace61_0_1.value },
  224. };
  225. static const nir_search_expression replace61 = {
  226.    { nir_search_value_expression },
  227.    nir_op_b2f,
  228.    { &replace61_0.value },
  229. };
  230.  
  231. static const struct transform nir_opt_algebraic_seq_xforms[] = {
  232.    { &search61, &replace61.value, 7 },
  233. };
  234.    
  235. static const nir_search_variable search142_0_0 = {
  236.    { nir_search_value_variable },
  237.    0, /* a */
  238.    false,
  239.    nir_type_invalid,
  240. };
  241.  
  242. static const nir_search_variable search142_0_1 = {
  243.    { nir_search_value_variable },
  244.    1, /* b */
  245.    true,
  246.    nir_type_invalid,
  247. };
  248.  
  249. static const nir_search_variable search142_0_2 = {
  250.    { nir_search_value_variable },
  251.    2, /* c */
  252.    true,
  253.    nir_type_invalid,
  254. };
  255. static const nir_search_expression search142_0 = {
  256.    { nir_search_value_expression },
  257.    nir_op_bcsel,
  258.    { &search142_0_0.value, &search142_0_1.value, &search142_0_2.value },
  259. };
  260.  
  261. static const nir_search_variable search142_1 = {
  262.    { nir_search_value_variable },
  263.    3, /* d */
  264.    true,
  265.    nir_type_invalid,
  266. };
  267. static const nir_search_expression search142 = {
  268.    { nir_search_value_expression },
  269.    nir_op_fne,
  270.    { &search142_0.value, &search142_1.value },
  271. };
  272.    
  273. static const nir_search_variable replace142_0 = {
  274.    { nir_search_value_variable },
  275.    0, /* a */
  276.    false,
  277.    nir_type_invalid,
  278. };
  279.  
  280. static const nir_search_variable replace142_1_0 = {
  281.    { nir_search_value_variable },
  282.    1, /* b */
  283.    false,
  284.    nir_type_invalid,
  285. };
  286.  
  287. static const nir_search_variable replace142_1_1 = {
  288.    { nir_search_value_variable },
  289.    3, /* d */
  290.    false,
  291.    nir_type_invalid,
  292. };
  293. static const nir_search_expression replace142_1 = {
  294.    { nir_search_value_expression },
  295.    nir_op_fne,
  296.    { &replace142_1_0.value, &replace142_1_1.value },
  297. };
  298.  
  299. static const nir_search_variable replace142_2_0 = {
  300.    { nir_search_value_variable },
  301.    2, /* c */
  302.    false,
  303.    nir_type_invalid,
  304. };
  305.  
  306. static const nir_search_variable replace142_2_1 = {
  307.    { nir_search_value_variable },
  308.    3, /* d */
  309.    false,
  310.    nir_type_invalid,
  311. };
  312. static const nir_search_expression replace142_2 = {
  313.    { nir_search_value_expression },
  314.    nir_op_fne,
  315.    { &replace142_2_0.value, &replace142_2_1.value },
  316. };
  317. static const nir_search_expression replace142 = {
  318.    { nir_search_value_expression },
  319.    nir_op_bcsel,
  320.    { &replace142_0.value, &replace142_1.value, &replace142_2.value },
  321. };
  322.    
  323. static const nir_search_variable search143_0 = {
  324.    { nir_search_value_variable },
  325.    0, /* d */
  326.    true,
  327.    nir_type_invalid,
  328. };
  329.  
  330. static const nir_search_variable search143_1_0 = {
  331.    { nir_search_value_variable },
  332.    1, /* a */
  333.    false,
  334.    nir_type_invalid,
  335. };
  336.  
  337. static const nir_search_variable search143_1_1 = {
  338.    { nir_search_value_variable },
  339.    2, /* b */
  340.    true,
  341.    nir_type_invalid,
  342. };
  343.  
  344. static const nir_search_variable search143_1_2 = {
  345.    { nir_search_value_variable },
  346.    3, /* c */
  347.    true,
  348.    nir_type_invalid,
  349. };
  350. static const nir_search_expression search143_1 = {
  351.    { nir_search_value_expression },
  352.    nir_op_bcsel,
  353.    { &search143_1_0.value, &search143_1_1.value, &search143_1_2.value },
  354. };
  355. static const nir_search_expression search143 = {
  356.    { nir_search_value_expression },
  357.    nir_op_fne,
  358.    { &search143_0.value, &search143_1.value },
  359. };
  360.    
  361. static const nir_search_variable replace143_0 = {
  362.    { nir_search_value_variable },
  363.    1, /* a */
  364.    false,
  365.    nir_type_invalid,
  366. };
  367.  
  368. static const nir_search_variable replace143_1_0 = {
  369.    { nir_search_value_variable },
  370.    0, /* d */
  371.    false,
  372.    nir_type_invalid,
  373. };
  374.  
  375. static const nir_search_variable replace143_1_1 = {
  376.    { nir_search_value_variable },
  377.    2, /* b */
  378.    false,
  379.    nir_type_invalid,
  380. };
  381. static const nir_search_expression replace143_1 = {
  382.    { nir_search_value_expression },
  383.    nir_op_fne,
  384.    { &replace143_1_0.value, &replace143_1_1.value },
  385. };
  386.  
  387. static const nir_search_variable replace143_2_0 = {
  388.    { nir_search_value_variable },
  389.    0, /* d */
  390.    false,
  391.    nir_type_invalid,
  392. };
  393.  
  394. static const nir_search_variable replace143_2_1 = {
  395.    { nir_search_value_variable },
  396.    3, /* c */
  397.    false,
  398.    nir_type_invalid,
  399. };
  400. static const nir_search_expression replace143_2 = {
  401.    { nir_search_value_expression },
  402.    nir_op_fne,
  403.    { &replace143_2_0.value, &replace143_2_1.value },
  404. };
  405. static const nir_search_expression replace143 = {
  406.    { nir_search_value_expression },
  407.    nir_op_bcsel,
  408.    { &replace143_0.value, &replace143_1.value, &replace143_2.value },
  409. };
  410.  
  411. static const struct transform nir_opt_algebraic_fne_xforms[] = {
  412.    { &search142, &replace142.value, 0 },
  413.    { &search143, &replace143.value, 0 },
  414. };
  415.    
  416. static const nir_search_variable search13_0 = {
  417.    { nir_search_value_variable },
  418.    0, /* a */
  419.    false,
  420.    nir_type_invalid,
  421. };
  422.  
  423. static const nir_search_constant search13_1 = {
  424.    { nir_search_value_constant },
  425.    { 0x0 /* 0 */ },
  426. };
  427. static const nir_search_expression search13 = {
  428.    { nir_search_value_expression },
  429.    nir_op_imul,
  430.    { &search13_0.value, &search13_1.value },
  431. };
  432.    
  433. static const nir_search_constant replace13 = {
  434.    { nir_search_value_constant },
  435.    { 0x0 /* 0 */ },
  436. };
  437.    
  438. static const nir_search_variable search15_0 = {
  439.    { nir_search_value_variable },
  440.    0, /* a */
  441.    false,
  442.    nir_type_invalid,
  443. };
  444.  
  445. static const nir_search_constant search15_1 = {
  446.    { nir_search_value_constant },
  447.    { 0x1 /* 1 */ },
  448. };
  449. static const nir_search_expression search15 = {
  450.    { nir_search_value_expression },
  451.    nir_op_imul,
  452.    { &search15_0.value, &search15_1.value },
  453. };
  454.    
  455. static const nir_search_variable replace15 = {
  456.    { nir_search_value_variable },
  457.    0, /* a */
  458.    false,
  459.    nir_type_invalid,
  460. };
  461.    
  462. static const nir_search_variable search17_0 = {
  463.    { nir_search_value_variable },
  464.    0, /* a */
  465.    false,
  466.    nir_type_invalid,
  467. };
  468.  
  469. static const nir_search_constant search17_1 = {
  470.    { nir_search_value_constant },
  471.    { 0xffffffff /* -1 */ },
  472. };
  473. static const nir_search_expression search17 = {
  474.    { nir_search_value_expression },
  475.    nir_op_imul,
  476.    { &search17_0.value, &search17_1.value },
  477. };
  478.    
  479. static const nir_search_variable replace17_0 = {
  480.    { nir_search_value_variable },
  481.    0, /* a */
  482.    false,
  483.    nir_type_invalid,
  484. };
  485. static const nir_search_expression replace17 = {
  486.    { nir_search_value_expression },
  487.    nir_op_ineg,
  488.    { &replace17_0.value },
  489. };
  490.    
  491. static const nir_search_variable search63_0_0 = {
  492.    { nir_search_value_variable },
  493.    0, /* a */
  494.    false,
  495.    nir_type_invalid,
  496. };
  497. static const nir_search_expression search63_0 = {
  498.    { nir_search_value_expression },
  499.    nir_op_b2i,
  500.    { &search63_0_0.value },
  501. };
  502.  
  503. static const nir_search_variable search63_1_0 = {
  504.    { nir_search_value_variable },
  505.    1, /* b */
  506.    false,
  507.    nir_type_invalid,
  508. };
  509. static const nir_search_expression search63_1 = {
  510.    { nir_search_value_expression },
  511.    nir_op_b2i,
  512.    { &search63_1_0.value },
  513. };
  514. static const nir_search_expression search63 = {
  515.    { nir_search_value_expression },
  516.    nir_op_imul,
  517.    { &search63_0.value, &search63_1.value },
  518. };
  519.    
  520. static const nir_search_variable replace63_0_0 = {
  521.    { nir_search_value_variable },
  522.    0, /* a */
  523.    false,
  524.    nir_type_invalid,
  525. };
  526.  
  527. static const nir_search_variable replace63_0_1 = {
  528.    { nir_search_value_variable },
  529.    1, /* b */
  530.    false,
  531.    nir_type_invalid,
  532. };
  533. static const nir_search_expression replace63_0 = {
  534.    { nir_search_value_expression },
  535.    nir_op_iand,
  536.    { &replace63_0_0.value, &replace63_0_1.value },
  537. };
  538. static const nir_search_expression replace63 = {
  539.    { nir_search_value_expression },
  540.    nir_op_b2i,
  541.    { &replace63_0.value },
  542. };
  543.  
  544. static const struct transform nir_opt_algebraic_imul_xforms[] = {
  545.    { &search13, &replace13.value, 0 },
  546.    { &search15, &replace15.value, 0 },
  547.    { &search17, &replace17.value, 0 },
  548.    { &search63, &replace63.value, 0 },
  549. };
  550.    
  551. static const nir_search_variable search74_0 = {
  552.    { nir_search_value_variable },
  553.    0, /* a */
  554.    false,
  555.    nir_type_invalid,
  556. };
  557.  
  558. static const nir_search_variable search74_1 = {
  559.    { nir_search_value_variable },
  560.    0, /* a */
  561.    false,
  562.    nir_type_invalid,
  563. };
  564. static const nir_search_expression search74 = {
  565.    { nir_search_value_expression },
  566.    nir_op_uge,
  567.    { &search74_0.value, &search74_1.value },
  568. };
  569.    
  570. static const nir_search_constant replace74 = {
  571.    { nir_search_value_constant },
  572.    { NIR_TRUE /* True */ },
  573. };
  574.    
  575. static const nir_search_variable search154_0_0 = {
  576.    { nir_search_value_variable },
  577.    0, /* a */
  578.    false,
  579.    nir_type_invalid,
  580. };
  581.  
  582. static const nir_search_variable search154_0_1 = {
  583.    { nir_search_value_variable },
  584.    1, /* b */
  585.    true,
  586.    nir_type_invalid,
  587. };
  588.  
  589. static const nir_search_variable search154_0_2 = {
  590.    { nir_search_value_variable },
  591.    2, /* c */
  592.    true,
  593.    nir_type_invalid,
  594. };
  595. static const nir_search_expression search154_0 = {
  596.    { nir_search_value_expression },
  597.    nir_op_bcsel,
  598.    { &search154_0_0.value, &search154_0_1.value, &search154_0_2.value },
  599. };
  600.  
  601. static const nir_search_variable search154_1 = {
  602.    { nir_search_value_variable },
  603.    3, /* d */
  604.    true,
  605.    nir_type_invalid,
  606. };
  607. static const nir_search_expression search154 = {
  608.    { nir_search_value_expression },
  609.    nir_op_uge,
  610.    { &search154_0.value, &search154_1.value },
  611. };
  612.    
  613. static const nir_search_variable replace154_0 = {
  614.    { nir_search_value_variable },
  615.    0, /* a */
  616.    false,
  617.    nir_type_invalid,
  618. };
  619.  
  620. static const nir_search_variable replace154_1_0 = {
  621.    { nir_search_value_variable },
  622.    1, /* b */
  623.    false,
  624.    nir_type_invalid,
  625. };
  626.  
  627. static const nir_search_variable replace154_1_1 = {
  628.    { nir_search_value_variable },
  629.    3, /* d */
  630.    false,
  631.    nir_type_invalid,
  632. };
  633. static const nir_search_expression replace154_1 = {
  634.    { nir_search_value_expression },
  635.    nir_op_uge,
  636.    { &replace154_1_0.value, &replace154_1_1.value },
  637. };
  638.  
  639. static const nir_search_variable replace154_2_0 = {
  640.    { nir_search_value_variable },
  641.    2, /* c */
  642.    false,
  643.    nir_type_invalid,
  644. };
  645.  
  646. static const nir_search_variable replace154_2_1 = {
  647.    { nir_search_value_variable },
  648.    3, /* d */
  649.    false,
  650.    nir_type_invalid,
  651. };
  652. static const nir_search_expression replace154_2 = {
  653.    { nir_search_value_expression },
  654.    nir_op_uge,
  655.    { &replace154_2_0.value, &replace154_2_1.value },
  656. };
  657. static const nir_search_expression replace154 = {
  658.    { nir_search_value_expression },
  659.    nir_op_bcsel,
  660.    { &replace154_0.value, &replace154_1.value, &replace154_2.value },
  661. };
  662.    
  663. static const nir_search_variable search155_0 = {
  664.    { nir_search_value_variable },
  665.    0, /* d */
  666.    true,
  667.    nir_type_invalid,
  668. };
  669.  
  670. static const nir_search_variable search155_1_0 = {
  671.    { nir_search_value_variable },
  672.    1, /* a */
  673.    false,
  674.    nir_type_invalid,
  675. };
  676.  
  677. static const nir_search_variable search155_1_1 = {
  678.    { nir_search_value_variable },
  679.    2, /* b */
  680.    true,
  681.    nir_type_invalid,
  682. };
  683.  
  684. static const nir_search_variable search155_1_2 = {
  685.    { nir_search_value_variable },
  686.    3, /* c */
  687.    true,
  688.    nir_type_invalid,
  689. };
  690. static const nir_search_expression search155_1 = {
  691.    { nir_search_value_expression },
  692.    nir_op_bcsel,
  693.    { &search155_1_0.value, &search155_1_1.value, &search155_1_2.value },
  694. };
  695. static const nir_search_expression search155 = {
  696.    { nir_search_value_expression },
  697.    nir_op_uge,
  698.    { &search155_0.value, &search155_1.value },
  699. };
  700.    
  701. static const nir_search_variable replace155_0 = {
  702.    { nir_search_value_variable },
  703.    1, /* a */
  704.    false,
  705.    nir_type_invalid,
  706. };
  707.  
  708. static const nir_search_variable replace155_1_0 = {
  709.    { nir_search_value_variable },
  710.    0, /* d */
  711.    false,
  712.    nir_type_invalid,
  713. };
  714.  
  715. static const nir_search_variable replace155_1_1 = {
  716.    { nir_search_value_variable },
  717.    2, /* b */
  718.    false,
  719.    nir_type_invalid,
  720. };
  721. static const nir_search_expression replace155_1 = {
  722.    { nir_search_value_expression },
  723.    nir_op_uge,
  724.    { &replace155_1_0.value, &replace155_1_1.value },
  725. };
  726.  
  727. static const nir_search_variable replace155_2_0 = {
  728.    { nir_search_value_variable },
  729.    0, /* d */
  730.    false,
  731.    nir_type_invalid,
  732. };
  733.  
  734. static const nir_search_variable replace155_2_1 = {
  735.    { nir_search_value_variable },
  736.    3, /* c */
  737.    false,
  738.    nir_type_invalid,
  739. };
  740. static const nir_search_expression replace155_2 = {
  741.    { nir_search_value_expression },
  742.    nir_op_uge,
  743.    { &replace155_2_0.value, &replace155_2_1.value },
  744. };
  745. static const nir_search_expression replace155 = {
  746.    { nir_search_value_expression },
  747.    nir_op_bcsel,
  748.    { &replace155_0.value, &replace155_1.value, &replace155_2.value },
  749. };
  750.  
  751. static const struct transform nir_opt_algebraic_uge_xforms[] = {
  752.    { &search74, &replace74.value, 0 },
  753.    { &search154, &replace154.value, 0 },
  754.    { &search155, &replace155.value, 0 },
  755. };
  756.    
  757. static const nir_search_variable search12_0 = {
  758.    { nir_search_value_variable },
  759.    0, /* a */
  760.    false,
  761.    nir_type_invalid,
  762. };
  763.  
  764. static const nir_search_constant search12_1 = {
  765.    { nir_search_value_constant },
  766.    { 0x0 /* 0.0 */ },
  767. };
  768. static const nir_search_expression search12 = {
  769.    { nir_search_value_expression },
  770.    nir_op_fmul,
  771.    { &search12_0.value, &search12_1.value },
  772. };
  773.    
  774. static const nir_search_constant replace12 = {
  775.    { nir_search_value_constant },
  776.    { 0x0 /* 0.0 */ },
  777. };
  778.    
  779. static const nir_search_variable search14_0 = {
  780.    { nir_search_value_variable },
  781.    0, /* a */
  782.    false,
  783.    nir_type_invalid,
  784. };
  785.  
  786. static const nir_search_constant search14_1 = {
  787.    { nir_search_value_constant },
  788.    { 0x3f800000 /* 1.0 */ },
  789. };
  790. static const nir_search_expression search14 = {
  791.    { nir_search_value_expression },
  792.    nir_op_fmul,
  793.    { &search14_0.value, &search14_1.value },
  794. };
  795.    
  796. static const nir_search_variable replace14 = {
  797.    { nir_search_value_variable },
  798.    0, /* a */
  799.    false,
  800.    nir_type_invalid,
  801. };
  802.    
  803. static const nir_search_variable search16_0 = {
  804.    { nir_search_value_variable },
  805.    0, /* a */
  806.    false,
  807.    nir_type_invalid,
  808. };
  809.  
  810. static const nir_search_constant search16_1 = {
  811.    { nir_search_value_constant },
  812.    { 0xbf800000 /* -1.0 */ },
  813. };
  814. static const nir_search_expression search16 = {
  815.    { nir_search_value_expression },
  816.    nir_op_fmul,
  817.    { &search16_0.value, &search16_1.value },
  818. };
  819.    
  820. static const nir_search_variable replace16_0 = {
  821.    { nir_search_value_variable },
  822.    0, /* a */
  823.    false,
  824.    nir_type_invalid,
  825. };
  826. static const nir_search_expression replace16 = {
  827.    { nir_search_value_expression },
  828.    nir_op_fneg,
  829.    { &replace16_0.value },
  830. };
  831.    
  832. static const nir_search_variable search64_0_0 = {
  833.    { nir_search_value_variable },
  834.    0, /* a */
  835.    false,
  836.    nir_type_invalid,
  837. };
  838. static const nir_search_expression search64_0 = {
  839.    { nir_search_value_expression },
  840.    nir_op_b2f,
  841.    { &search64_0_0.value },
  842. };
  843.  
  844. static const nir_search_variable search64_1_0 = {
  845.    { nir_search_value_variable },
  846.    1, /* b */
  847.    false,
  848.    nir_type_invalid,
  849. };
  850. static const nir_search_expression search64_1 = {
  851.    { nir_search_value_expression },
  852.    nir_op_b2f,
  853.    { &search64_1_0.value },
  854. };
  855. static const nir_search_expression search64 = {
  856.    { nir_search_value_expression },
  857.    nir_op_fmul,
  858.    { &search64_0.value, &search64_1.value },
  859. };
  860.    
  861. static const nir_search_variable replace64_0_0 = {
  862.    { nir_search_value_variable },
  863.    0, /* a */
  864.    false,
  865.    nir_type_invalid,
  866. };
  867.  
  868. static const nir_search_variable replace64_0_1 = {
  869.    { nir_search_value_variable },
  870.    1, /* b */
  871.    false,
  872.    nir_type_invalid,
  873. };
  874. static const nir_search_expression replace64_0 = {
  875.    { nir_search_value_expression },
  876.    nir_op_iand,
  877.    { &replace64_0_0.value, &replace64_0_1.value },
  878. };
  879. static const nir_search_expression replace64 = {
  880.    { nir_search_value_expression },
  881.    nir_op_b2f,
  882.    { &replace64_0.value },
  883. };
  884.    
  885. static const nir_search_variable search108_0_0 = {
  886.    { nir_search_value_variable },
  887.    0, /* a */
  888.    false,
  889.    nir_type_invalid,
  890. };
  891. static const nir_search_expression search108_0 = {
  892.    { nir_search_value_expression },
  893.    nir_op_fexp2,
  894.    { &search108_0_0.value },
  895. };
  896.  
  897. static const nir_search_variable search108_1_0 = {
  898.    { nir_search_value_variable },
  899.    1, /* b */
  900.    false,
  901.    nir_type_invalid,
  902. };
  903. static const nir_search_expression search108_1 = {
  904.    { nir_search_value_expression },
  905.    nir_op_fexp2,
  906.    { &search108_1_0.value },
  907. };
  908. static const nir_search_expression search108 = {
  909.    { nir_search_value_expression },
  910.    nir_op_fmul,
  911.    { &search108_0.value, &search108_1.value },
  912. };
  913.    
  914. static const nir_search_variable replace108_0_0 = {
  915.    { nir_search_value_variable },
  916.    0, /* a */
  917.    false,
  918.    nir_type_invalid,
  919. };
  920.  
  921. static const nir_search_variable replace108_0_1 = {
  922.    { nir_search_value_variable },
  923.    1, /* b */
  924.    false,
  925.    nir_type_invalid,
  926. };
  927. static const nir_search_expression replace108_0 = {
  928.    { nir_search_value_expression },
  929.    nir_op_fadd,
  930.    { &replace108_0_0.value, &replace108_0_1.value },
  931. };
  932. static const nir_search_expression replace108 = {
  933.    { nir_search_value_expression },
  934.    nir_op_fexp2,
  935.    { &replace108_0.value },
  936. };
  937.  
  938. static const struct transform nir_opt_algebraic_fmul_xforms[] = {
  939.    { &search12, &replace12.value, 0 },
  940.    { &search14, &replace14.value, 0 },
  941.    { &search16, &replace16.value, 0 },
  942.    { &search64, &replace64.value, 0 },
  943.    { &search108, &replace108.value, 0 },
  944. };
  945.    
  946. static const nir_search_constant search18_0 = {
  947.    { nir_search_value_constant },
  948.    { 0x0 /* 0.0 */ },
  949. };
  950.  
  951. static const nir_search_variable search18_1 = {
  952.    { nir_search_value_variable },
  953.    0, /* a */
  954.    false,
  955.    nir_type_invalid,
  956. };
  957.  
  958. static const nir_search_variable search18_2 = {
  959.    { nir_search_value_variable },
  960.    1, /* b */
  961.    false,
  962.    nir_type_invalid,
  963. };
  964. static const nir_search_expression search18 = {
  965.    { nir_search_value_expression },
  966.    nir_op_ffma,
  967.    { &search18_0.value, &search18_1.value, &search18_2.value },
  968. };
  969.    
  970. static const nir_search_variable replace18 = {
  971.    { nir_search_value_variable },
  972.    1, /* b */
  973.    false,
  974.    nir_type_invalid,
  975. };
  976.    
  977. static const nir_search_variable search19_0 = {
  978.    { nir_search_value_variable },
  979.    0, /* a */
  980.    false,
  981.    nir_type_invalid,
  982. };
  983.  
  984. static const nir_search_constant search19_1 = {
  985.    { nir_search_value_constant },
  986.    { 0x0 /* 0.0 */ },
  987. };
  988.  
  989. static const nir_search_variable search19_2 = {
  990.    { nir_search_value_variable },
  991.    1, /* b */
  992.    false,
  993.    nir_type_invalid,
  994. };
  995. static const nir_search_expression search19 = {
  996.    { nir_search_value_expression },
  997.    nir_op_ffma,
  998.    { &search19_0.value, &search19_1.value, &search19_2.value },
  999. };
  1000.    
  1001. static const nir_search_variable replace19 = {
  1002.    { nir_search_value_variable },
  1003.    1, /* b */
  1004.    false,
  1005.    nir_type_invalid,
  1006. };
  1007.    
  1008. static const nir_search_variable search20_0 = {
  1009.    { nir_search_value_variable },
  1010.    0, /* a */
  1011.    false,
  1012.    nir_type_invalid,
  1013. };
  1014.  
  1015. static const nir_search_variable search20_1 = {
  1016.    { nir_search_value_variable },
  1017.    1, /* b */
  1018.    false,
  1019.    nir_type_invalid,
  1020. };
  1021.  
  1022. static const nir_search_constant search20_2 = {
  1023.    { nir_search_value_constant },
  1024.    { 0x0 /* 0.0 */ },
  1025. };
  1026. static const nir_search_expression search20 = {
  1027.    { nir_search_value_expression },
  1028.    nir_op_ffma,
  1029.    { &search20_0.value, &search20_1.value, &search20_2.value },
  1030. };
  1031.    
  1032. static const nir_search_variable replace20_0 = {
  1033.    { nir_search_value_variable },
  1034.    0, /* a */
  1035.    false,
  1036.    nir_type_invalid,
  1037. };
  1038.  
  1039. static const nir_search_variable replace20_1 = {
  1040.    { nir_search_value_variable },
  1041.    1, /* b */
  1042.    false,
  1043.    nir_type_invalid,
  1044. };
  1045. static const nir_search_expression replace20 = {
  1046.    { nir_search_value_expression },
  1047.    nir_op_fmul,
  1048.    { &replace20_0.value, &replace20_1.value },
  1049. };
  1050.    
  1051. static const nir_search_variable search21_0 = {
  1052.    { nir_search_value_variable },
  1053.    0, /* a */
  1054.    false,
  1055.    nir_type_invalid,
  1056. };
  1057.  
  1058. static const nir_search_constant search21_1 = {
  1059.    { nir_search_value_constant },
  1060.    { 0x3f800000 /* 1.0 */ },
  1061. };
  1062.  
  1063. static const nir_search_variable search21_2 = {
  1064.    { nir_search_value_variable },
  1065.    1, /* b */
  1066.    false,
  1067.    nir_type_invalid,
  1068. };
  1069. static const nir_search_expression search21 = {
  1070.    { nir_search_value_expression },
  1071.    nir_op_ffma,
  1072.    { &search21_0.value, &search21_1.value, &search21_2.value },
  1073. };
  1074.    
  1075. static const nir_search_variable replace21_0 = {
  1076.    { nir_search_value_variable },
  1077.    0, /* a */
  1078.    false,
  1079.    nir_type_invalid,
  1080. };
  1081.  
  1082. static const nir_search_variable replace21_1 = {
  1083.    { nir_search_value_variable },
  1084.    1, /* b */
  1085.    false,
  1086.    nir_type_invalid,
  1087. };
  1088. static const nir_search_expression replace21 = {
  1089.    { nir_search_value_expression },
  1090.    nir_op_fadd,
  1091.    { &replace21_0.value, &replace21_1.value },
  1092. };
  1093.    
  1094. static const nir_search_constant search22_0 = {
  1095.    { nir_search_value_constant },
  1096.    { 0x3f800000 /* 1.0 */ },
  1097. };
  1098.  
  1099. static const nir_search_variable search22_1 = {
  1100.    { nir_search_value_variable },
  1101.    0, /* a */
  1102.    false,
  1103.    nir_type_invalid,
  1104. };
  1105.  
  1106. static const nir_search_variable search22_2 = {
  1107.    { nir_search_value_variable },
  1108.    1, /* b */
  1109.    false,
  1110.    nir_type_invalid,
  1111. };
  1112. static const nir_search_expression search22 = {
  1113.    { nir_search_value_expression },
  1114.    nir_op_ffma,
  1115.    { &search22_0.value, &search22_1.value, &search22_2.value },
  1116. };
  1117.    
  1118. static const nir_search_variable replace22_0 = {
  1119.    { nir_search_value_variable },
  1120.    0, /* a */
  1121.    false,
  1122.    nir_type_invalid,
  1123. };
  1124.  
  1125. static const nir_search_variable replace22_1 = {
  1126.    { nir_search_value_variable },
  1127.    1, /* b */
  1128.    false,
  1129.    nir_type_invalid,
  1130. };
  1131. static const nir_search_expression replace22 = {
  1132.    { nir_search_value_expression },
  1133.    nir_op_fadd,
  1134.    { &replace22_0.value, &replace22_1.value },
  1135. };
  1136.    
  1137. static const nir_search_variable search30_0 = {
  1138.    { nir_search_value_variable },
  1139.    0, /* a */
  1140.    false,
  1141.    nir_type_invalid,
  1142. };
  1143.  
  1144. static const nir_search_variable search30_1 = {
  1145.    { nir_search_value_variable },
  1146.    1, /* b */
  1147.    false,
  1148.    nir_type_invalid,
  1149. };
  1150.  
  1151. static const nir_search_variable search30_2 = {
  1152.    { nir_search_value_variable },
  1153.    2, /* c */
  1154.    false,
  1155.    nir_type_invalid,
  1156. };
  1157. static const nir_search_expression search30 = {
  1158.    { nir_search_value_expression },
  1159.    nir_op_ffma,
  1160.    { &search30_0.value, &search30_1.value, &search30_2.value },
  1161. };
  1162.    
  1163. static const nir_search_variable replace30_0_0 = {
  1164.    { nir_search_value_variable },
  1165.    0, /* a */
  1166.    false,
  1167.    nir_type_invalid,
  1168. };
  1169.  
  1170. static const nir_search_variable replace30_0_1 = {
  1171.    { nir_search_value_variable },
  1172.    1, /* b */
  1173.    false,
  1174.    nir_type_invalid,
  1175. };
  1176. static const nir_search_expression replace30_0 = {
  1177.    { nir_search_value_expression },
  1178.    nir_op_fmul,
  1179.    { &replace30_0_0.value, &replace30_0_1.value },
  1180. };
  1181.  
  1182. static const nir_search_variable replace30_1 = {
  1183.    { nir_search_value_variable },
  1184.    2, /* c */
  1185.    false,
  1186.    nir_type_invalid,
  1187. };
  1188. static const nir_search_expression replace30 = {
  1189.    { nir_search_value_expression },
  1190.    nir_op_fadd,
  1191.    { &replace30_0.value, &replace30_1.value },
  1192. };
  1193.  
  1194. static const struct transform nir_opt_algebraic_ffma_xforms[] = {
  1195.    { &search18, &replace18.value, 0 },
  1196.    { &search19, &replace19.value, 0 },
  1197.    { &search20, &replace20.value, 0 },
  1198.    { &search21, &replace21.value, 0 },
  1199.    { &search22, &replace22.value, 0 },
  1200.    { &search30, &replace30.value, 3 },
  1201. };
  1202.    
  1203. static const nir_search_variable search49_0 = {
  1204.    { nir_search_value_variable },
  1205.    0, /* a */
  1206.    false,
  1207.    nir_type_invalid,
  1208. };
  1209.  
  1210. static const nir_search_variable search49_1 = {
  1211.    { nir_search_value_variable },
  1212.    0, /* a */
  1213.    false,
  1214.    nir_type_invalid,
  1215. };
  1216. static const nir_search_expression search49 = {
  1217.    { nir_search_value_expression },
  1218.    nir_op_umin,
  1219.    { &search49_0.value, &search49_1.value },
  1220. };
  1221.    
  1222. static const nir_search_variable replace49 = {
  1223.    { nir_search_value_variable },
  1224.    0, /* a */
  1225.    false,
  1226.    nir_type_invalid,
  1227. };
  1228.  
  1229. static const struct transform nir_opt_algebraic_umin_xforms[] = {
  1230.    { &search49, &replace49.value, 0 },
  1231. };
  1232.    
  1233. static const nir_search_variable search50_0 = {
  1234.    { nir_search_value_variable },
  1235.    0, /* a */
  1236.    false,
  1237.    nir_type_invalid,
  1238. };
  1239.  
  1240. static const nir_search_variable search50_1 = {
  1241.    { nir_search_value_variable },
  1242.    0, /* a */
  1243.    false,
  1244.    nir_type_invalid,
  1245. };
  1246. static const nir_search_expression search50 = {
  1247.    { nir_search_value_expression },
  1248.    nir_op_umax,
  1249.    { &search50_0.value, &search50_1.value },
  1250. };
  1251.    
  1252. static const nir_search_variable replace50 = {
  1253.    { nir_search_value_variable },
  1254.    0, /* a */
  1255.    false,
  1256.    nir_type_invalid,
  1257. };
  1258.  
  1259. static const struct transform nir_opt_algebraic_umax_xforms[] = {
  1260.    { &search50, &replace50.value, 0 },
  1261. };
  1262.    
  1263. static const nir_search_variable search41_0_0 = {
  1264.    { nir_search_value_variable },
  1265.    0, /* a */
  1266.    false,
  1267.    nir_type_invalid,
  1268. };
  1269.  
  1270. static const nir_search_variable search41_0_1 = {
  1271.    { nir_search_value_variable },
  1272.    1, /* b */
  1273.    false,
  1274.    nir_type_invalid,
  1275. };
  1276. static const nir_search_expression search41_0 = {
  1277.    { nir_search_value_expression },
  1278.    nir_op_flt,
  1279.    { &search41_0_0.value, &search41_0_1.value },
  1280. };
  1281.  
  1282. static const nir_search_variable search41_1 = {
  1283.    { nir_search_value_variable },
  1284.    0, /* a */
  1285.    false,
  1286.    nir_type_invalid,
  1287. };
  1288.  
  1289. static const nir_search_variable search41_2 = {
  1290.    { nir_search_value_variable },
  1291.    1, /* b */
  1292.    false,
  1293.    nir_type_invalid,
  1294. };
  1295. static const nir_search_expression search41 = {
  1296.    { nir_search_value_expression },
  1297.    nir_op_bcsel,
  1298.    { &search41_0.value, &search41_1.value, &search41_2.value },
  1299. };
  1300.    
  1301. static const nir_search_variable replace41_0 = {
  1302.    { nir_search_value_variable },
  1303.    0, /* a */
  1304.    false,
  1305.    nir_type_invalid,
  1306. };
  1307.  
  1308. static const nir_search_variable replace41_1 = {
  1309.    { nir_search_value_variable },
  1310.    1, /* b */
  1311.    false,
  1312.    nir_type_invalid,
  1313. };
  1314. static const nir_search_expression replace41 = {
  1315.    { nir_search_value_expression },
  1316.    nir_op_fmin,
  1317.    { &replace41_0.value, &replace41_1.value },
  1318. };
  1319.    
  1320. static const nir_search_variable search42_0_0 = {
  1321.    { nir_search_value_variable },
  1322.    0, /* a */
  1323.    false,
  1324.    nir_type_invalid,
  1325. };
  1326.  
  1327. static const nir_search_variable search42_0_1 = {
  1328.    { nir_search_value_variable },
  1329.    1, /* b */
  1330.    false,
  1331.    nir_type_invalid,
  1332. };
  1333. static const nir_search_expression search42_0 = {
  1334.    { nir_search_value_expression },
  1335.    nir_op_flt,
  1336.    { &search42_0_0.value, &search42_0_1.value },
  1337. };
  1338.  
  1339. static const nir_search_variable search42_1 = {
  1340.    { nir_search_value_variable },
  1341.    1, /* b */
  1342.    false,
  1343.    nir_type_invalid,
  1344. };
  1345.  
  1346. static const nir_search_variable search42_2 = {
  1347.    { nir_search_value_variable },
  1348.    0, /* a */
  1349.    false,
  1350.    nir_type_invalid,
  1351. };
  1352. static const nir_search_expression search42 = {
  1353.    { nir_search_value_expression },
  1354.    nir_op_bcsel,
  1355.    { &search42_0.value, &search42_1.value, &search42_2.value },
  1356. };
  1357.    
  1358. static const nir_search_variable replace42_0 = {
  1359.    { nir_search_value_variable },
  1360.    0, /* a */
  1361.    false,
  1362.    nir_type_invalid,
  1363. };
  1364.  
  1365. static const nir_search_variable replace42_1 = {
  1366.    { nir_search_value_variable },
  1367.    1, /* b */
  1368.    false,
  1369.    nir_type_invalid,
  1370. };
  1371. static const nir_search_expression replace42 = {
  1372.    { nir_search_value_expression },
  1373.    nir_op_fmax,
  1374.    { &replace42_0.value, &replace42_1.value },
  1375. };
  1376.    
  1377. static const nir_search_variable search43_0_0 = {
  1378.    { nir_search_value_variable },
  1379.    0, /* a */
  1380.    false,
  1381.    nir_type_bool,
  1382. };
  1383. static const nir_search_expression search43_0 = {
  1384.    { nir_search_value_expression },
  1385.    nir_op_inot,
  1386.    { &search43_0_0.value },
  1387. };
  1388.  
  1389. static const nir_search_variable search43_1 = {
  1390.    { nir_search_value_variable },
  1391.    1, /* b */
  1392.    false,
  1393.    nir_type_invalid,
  1394. };
  1395.  
  1396. static const nir_search_variable search43_2 = {
  1397.    { nir_search_value_variable },
  1398.    2, /* c */
  1399.    false,
  1400.    nir_type_invalid,
  1401. };
  1402. static const nir_search_expression search43 = {
  1403.    { nir_search_value_expression },
  1404.    nir_op_bcsel,
  1405.    { &search43_0.value, &search43_1.value, &search43_2.value },
  1406. };
  1407.    
  1408. static const nir_search_variable replace43_0 = {
  1409.    { nir_search_value_variable },
  1410.    0, /* a */
  1411.    false,
  1412.    nir_type_invalid,
  1413. };
  1414.  
  1415. static const nir_search_variable replace43_1 = {
  1416.    { nir_search_value_variable },
  1417.    2, /* c */
  1418.    false,
  1419.    nir_type_invalid,
  1420. };
  1421.  
  1422. static const nir_search_variable replace43_2 = {
  1423.    { nir_search_value_variable },
  1424.    1, /* b */
  1425.    false,
  1426.    nir_type_invalid,
  1427. };
  1428. static const nir_search_expression replace43 = {
  1429.    { nir_search_value_expression },
  1430.    nir_op_bcsel,
  1431.    { &replace43_0.value, &replace43_1.value, &replace43_2.value },
  1432. };
  1433.    
  1434. static const nir_search_variable search44_0 = {
  1435.    { nir_search_value_variable },
  1436.    0, /* a */
  1437.    false,
  1438.    nir_type_invalid,
  1439. };
  1440.  
  1441. static const nir_search_variable search44_1_0 = {
  1442.    { nir_search_value_variable },
  1443.    0, /* a */
  1444.    false,
  1445.    nir_type_invalid,
  1446. };
  1447.  
  1448. static const nir_search_variable search44_1_1 = {
  1449.    { nir_search_value_variable },
  1450.    1, /* b */
  1451.    false,
  1452.    nir_type_invalid,
  1453. };
  1454.  
  1455. static const nir_search_variable search44_1_2 = {
  1456.    { nir_search_value_variable },
  1457.    2, /* c */
  1458.    false,
  1459.    nir_type_invalid,
  1460. };
  1461. static const nir_search_expression search44_1 = {
  1462.    { nir_search_value_expression },
  1463.    nir_op_bcsel,
  1464.    { &search44_1_0.value, &search44_1_1.value, &search44_1_2.value },
  1465. };
  1466.  
  1467. static const nir_search_variable search44_2 = {
  1468.    { nir_search_value_variable },
  1469.    3, /* d */
  1470.    false,
  1471.    nir_type_invalid,
  1472. };
  1473. static const nir_search_expression search44 = {
  1474.    { nir_search_value_expression },
  1475.    nir_op_bcsel,
  1476.    { &search44_0.value, &search44_1.value, &search44_2.value },
  1477. };
  1478.    
  1479. static const nir_search_variable replace44_0 = {
  1480.    { nir_search_value_variable },
  1481.    0, /* a */
  1482.    false,
  1483.    nir_type_invalid,
  1484. };
  1485.  
  1486. static const nir_search_variable replace44_1 = {
  1487.    { nir_search_value_variable },
  1488.    1, /* b */
  1489.    false,
  1490.    nir_type_invalid,
  1491. };
  1492.  
  1493. static const nir_search_variable replace44_2 = {
  1494.    { nir_search_value_variable },
  1495.    3, /* d */
  1496.    false,
  1497.    nir_type_invalid,
  1498. };
  1499. static const nir_search_expression replace44 = {
  1500.    { nir_search_value_expression },
  1501.    nir_op_bcsel,
  1502.    { &replace44_0.value, &replace44_1.value, &replace44_2.value },
  1503. };
  1504.    
  1505. static const nir_search_variable search116_0 = {
  1506.    { nir_search_value_variable },
  1507.    0, /* a */
  1508.    false,
  1509.    nir_type_invalid,
  1510. };
  1511.  
  1512. static const nir_search_constant search116_1 = {
  1513.    { nir_search_value_constant },
  1514.    { NIR_TRUE /* True */ },
  1515. };
  1516.  
  1517. static const nir_search_constant search116_2 = {
  1518.    { nir_search_value_constant },
  1519.    { NIR_FALSE /* False */ },
  1520. };
  1521. static const nir_search_expression search116 = {
  1522.    { nir_search_value_expression },
  1523.    nir_op_bcsel,
  1524.    { &search116_0.value, &search116_1.value, &search116_2.value },
  1525. };
  1526.    
  1527. static const nir_search_variable replace116_0 = {
  1528.    { nir_search_value_variable },
  1529.    0, /* a */
  1530.    false,
  1531.    nir_type_invalid,
  1532. };
  1533.  
  1534. static const nir_search_constant replace116_1 = {
  1535.    { nir_search_value_constant },
  1536.    { 0x0 /* 0 */ },
  1537. };
  1538. static const nir_search_expression replace116 = {
  1539.    { nir_search_value_expression },
  1540.    nir_op_ine,
  1541.    { &replace116_0.value, &replace116_1.value },
  1542. };
  1543.    
  1544. static const nir_search_variable search117_0 = {
  1545.    { nir_search_value_variable },
  1546.    0, /* a */
  1547.    false,
  1548.    nir_type_invalid,
  1549. };
  1550.  
  1551. static const nir_search_constant search117_1 = {
  1552.    { nir_search_value_constant },
  1553.    { NIR_FALSE /* False */ },
  1554. };
  1555.  
  1556. static const nir_search_constant search117_2 = {
  1557.    { nir_search_value_constant },
  1558.    { NIR_TRUE /* True */ },
  1559. };
  1560. static const nir_search_expression search117 = {
  1561.    { nir_search_value_expression },
  1562.    nir_op_bcsel,
  1563.    { &search117_0.value, &search117_1.value, &search117_2.value },
  1564. };
  1565.    
  1566. static const nir_search_variable replace117_0 = {
  1567.    { nir_search_value_variable },
  1568.    0, /* a */
  1569.    false,
  1570.    nir_type_invalid,
  1571. };
  1572.  
  1573. static const nir_search_constant replace117_1 = {
  1574.    { nir_search_value_constant },
  1575.    { 0x0 /* 0 */ },
  1576. };
  1577. static const nir_search_expression replace117 = {
  1578.    { nir_search_value_expression },
  1579.    nir_op_ieq,
  1580.    { &replace117_0.value, &replace117_1.value },
  1581. };
  1582.    
  1583. static const nir_search_constant search118_0 = {
  1584.    { nir_search_value_constant },
  1585.    { NIR_TRUE /* True */ },
  1586. };
  1587.  
  1588. static const nir_search_variable search118_1 = {
  1589.    { nir_search_value_variable },
  1590.    0, /* b */
  1591.    false,
  1592.    nir_type_invalid,
  1593. };
  1594.  
  1595. static const nir_search_variable search118_2 = {
  1596.    { nir_search_value_variable },
  1597.    1, /* c */
  1598.    false,
  1599.    nir_type_invalid,
  1600. };
  1601. static const nir_search_expression search118 = {
  1602.    { nir_search_value_expression },
  1603.    nir_op_bcsel,
  1604.    { &search118_0.value, &search118_1.value, &search118_2.value },
  1605. };
  1606.    
  1607. static const nir_search_variable replace118 = {
  1608.    { nir_search_value_variable },
  1609.    0, /* b */
  1610.    false,
  1611.    nir_type_invalid,
  1612. };
  1613.    
  1614. static const nir_search_constant search119_0 = {
  1615.    { nir_search_value_constant },
  1616.    { NIR_FALSE /* False */ },
  1617. };
  1618.  
  1619. static const nir_search_variable search119_1 = {
  1620.    { nir_search_value_variable },
  1621.    0, /* b */
  1622.    false,
  1623.    nir_type_invalid,
  1624. };
  1625.  
  1626. static const nir_search_variable search119_2 = {
  1627.    { nir_search_value_variable },
  1628.    1, /* c */
  1629.    false,
  1630.    nir_type_invalid,
  1631. };
  1632. static const nir_search_expression search119 = {
  1633.    { nir_search_value_expression },
  1634.    nir_op_bcsel,
  1635.    { &search119_0.value, &search119_1.value, &search119_2.value },
  1636. };
  1637.    
  1638. static const nir_search_variable replace119 = {
  1639.    { nir_search_value_variable },
  1640.    1, /* c */
  1641.    false,
  1642.    nir_type_invalid,
  1643. };
  1644.    
  1645. static const nir_search_variable search120_0 = {
  1646.    { nir_search_value_variable },
  1647.    0, /* a */
  1648.    true,
  1649.    nir_type_invalid,
  1650. };
  1651.  
  1652. static const nir_search_variable search120_1 = {
  1653.    { nir_search_value_variable },
  1654.    1, /* b */
  1655.    false,
  1656.    nir_type_invalid,
  1657. };
  1658.  
  1659. static const nir_search_variable search120_2 = {
  1660.    { nir_search_value_variable },
  1661.    2, /* c */
  1662.    false,
  1663.    nir_type_invalid,
  1664. };
  1665. static const nir_search_expression search120 = {
  1666.    { nir_search_value_expression },
  1667.    nir_op_bcsel,
  1668.    { &search120_0.value, &search120_1.value, &search120_2.value },
  1669. };
  1670.    
  1671. static const nir_search_variable replace120_0_0 = {
  1672.    { nir_search_value_variable },
  1673.    0, /* a */
  1674.    false,
  1675.    nir_type_invalid,
  1676. };
  1677.  
  1678. static const nir_search_constant replace120_0_1 = {
  1679.    { nir_search_value_constant },
  1680.    { 0x0 /* 0 */ },
  1681. };
  1682. static const nir_search_expression replace120_0 = {
  1683.    { nir_search_value_expression },
  1684.    nir_op_ine,
  1685.    { &replace120_0_0.value, &replace120_0_1.value },
  1686. };
  1687.  
  1688. static const nir_search_variable replace120_1 = {
  1689.    { nir_search_value_variable },
  1690.    1, /* b */
  1691.    false,
  1692.    nir_type_invalid,
  1693. };
  1694.  
  1695. static const nir_search_variable replace120_2 = {
  1696.    { nir_search_value_variable },
  1697.    2, /* c */
  1698.    false,
  1699.    nir_type_invalid,
  1700. };
  1701. static const nir_search_expression replace120 = {
  1702.    { nir_search_value_expression },
  1703.    nir_op_bcsel,
  1704.    { &replace120_0.value, &replace120_1.value, &replace120_2.value },
  1705. };
  1706.    
  1707. static const nir_search_variable search121_0 = {
  1708.    { nir_search_value_variable },
  1709.    0, /* a */
  1710.    false,
  1711.    nir_type_invalid,
  1712. };
  1713.  
  1714. static const nir_search_variable search121_1 = {
  1715.    { nir_search_value_variable },
  1716.    1, /* b */
  1717.    false,
  1718.    nir_type_invalid,
  1719. };
  1720.  
  1721. static const nir_search_variable search121_2 = {
  1722.    { nir_search_value_variable },
  1723.    1, /* b */
  1724.    false,
  1725.    nir_type_invalid,
  1726. };
  1727. static const nir_search_expression search121 = {
  1728.    { nir_search_value_expression },
  1729.    nir_op_bcsel,
  1730.    { &search121_0.value, &search121_1.value, &search121_2.value },
  1731. };
  1732.    
  1733. static const nir_search_variable replace121 = {
  1734.    { nir_search_value_variable },
  1735.    1, /* b */
  1736.    false,
  1737.    nir_type_invalid,
  1738. };
  1739.  
  1740. static const struct transform nir_opt_algebraic_bcsel_xforms[] = {
  1741.    { &search41, &replace41.value, 0 },
  1742.    { &search42, &replace42.value, 0 },
  1743.    { &search43, &replace43.value, 0 },
  1744.    { &search44, &replace44.value, 0 },
  1745.    { &search116, &replace116.value, 0 },
  1746.    { &search117, &replace117.value, 0 },
  1747.    { &search118, &replace118.value, 0 },
  1748.    { &search119, &replace119.value, 0 },
  1749.    { &search120, &replace120.value, 0 },
  1750.    { &search121, &replace121.value, 0 },
  1751. };
  1752.    
  1753. static const nir_search_variable search60_0 = {
  1754.    { nir_search_value_variable },
  1755.    0, /* a */
  1756.    false,
  1757.    nir_type_invalid,
  1758. };
  1759.  
  1760. static const nir_search_variable search60_1 = {
  1761.    { nir_search_value_variable },
  1762.    1, /* b */
  1763.    false,
  1764.    nir_type_invalid,
  1765. };
  1766. static const nir_search_expression search60 = {
  1767.    { nir_search_value_expression },
  1768.    nir_op_sge,
  1769.    { &search60_0.value, &search60_1.value },
  1770. };
  1771.    
  1772. static const nir_search_variable replace60_0_0 = {
  1773.    { nir_search_value_variable },
  1774.    0, /* a */
  1775.    false,
  1776.    nir_type_invalid,
  1777. };
  1778.  
  1779. static const nir_search_variable replace60_0_1 = {
  1780.    { nir_search_value_variable },
  1781.    1, /* b */
  1782.    false,
  1783.    nir_type_invalid,
  1784. };
  1785. static const nir_search_expression replace60_0 = {
  1786.    { nir_search_value_expression },
  1787.    nir_op_fge,
  1788.    { &replace60_0_0.value, &replace60_0_1.value },
  1789. };
  1790. static const nir_search_expression replace60 = {
  1791.    { nir_search_value_expression },
  1792.    nir_op_b2f,
  1793.    { &replace60_0.value },
  1794. };
  1795.  
  1796. static const struct transform nir_opt_algebraic_sge_xforms[] = {
  1797.    { &search60, &replace60.value, 7 },
  1798. };
  1799.    
  1800. static const nir_search_variable search99_0_0 = {
  1801.    { nir_search_value_variable },
  1802.    0, /* a */
  1803.    false,
  1804.    nir_type_invalid,
  1805. };
  1806. static const nir_search_expression search99_0 = {
  1807.    { nir_search_value_expression },
  1808.    nir_op_fexp2,
  1809.    { &search99_0_0.value },
  1810. };
  1811. static const nir_search_expression search99 = {
  1812.    { nir_search_value_expression },
  1813.    nir_op_fsqrt,
  1814.    { &search99_0.value },
  1815. };
  1816.    
  1817. static const nir_search_constant replace99_0_0 = {
  1818.    { nir_search_value_constant },
  1819.    { 0x3f000000 /* 0.5 */ },
  1820. };
  1821.  
  1822. static const nir_search_variable replace99_0_1 = {
  1823.    { nir_search_value_variable },
  1824.    0, /* a */
  1825.    false,
  1826.    nir_type_invalid,
  1827. };
  1828. static const nir_search_expression replace99_0 = {
  1829.    { nir_search_value_expression },
  1830.    nir_op_fmul,
  1831.    { &replace99_0_0.value, &replace99_0_1.value },
  1832. };
  1833. static const nir_search_expression replace99 = {
  1834.    { nir_search_value_expression },
  1835.    nir_op_fexp2,
  1836.    { &replace99_0.value },
  1837. };
  1838.    
  1839. static const nir_search_variable search112_0 = {
  1840.    { nir_search_value_variable },
  1841.    0, /* a */
  1842.    false,
  1843.    nir_type_invalid,
  1844. };
  1845. static const nir_search_expression search112 = {
  1846.    { nir_search_value_expression },
  1847.    nir_op_fsqrt,
  1848.    { &search112_0.value },
  1849. };
  1850.    
  1851. static const nir_search_variable replace112_0_0 = {
  1852.    { nir_search_value_variable },
  1853.    0, /* a */
  1854.    false,
  1855.    nir_type_invalid,
  1856. };
  1857. static const nir_search_expression replace112_0 = {
  1858.    { nir_search_value_expression },
  1859.    nir_op_frsq,
  1860.    { &replace112_0_0.value },
  1861. };
  1862. static const nir_search_expression replace112 = {
  1863.    { nir_search_value_expression },
  1864.    nir_op_frcp,
  1865.    { &replace112_0.value },
  1866. };
  1867.  
  1868. static const struct transform nir_opt_algebraic_fsqrt_xforms[] = {
  1869.    { &search99, &replace99.value, 0 },
  1870.    { &search112, &replace112.value, 10 },
  1871. };
  1872.    
  1873. static const nir_search_variable search7_0 = {
  1874.    { nir_search_value_variable },
  1875.    0, /* a */
  1876.    false,
  1877.    nir_type_invalid,
  1878. };
  1879.  
  1880. static const nir_search_constant search7_1 = {
  1881.    { nir_search_value_constant },
  1882.    { 0x0 /* 0 */ },
  1883. };
  1884. static const nir_search_expression search7 = {
  1885.    { nir_search_value_expression },
  1886.    nir_op_iadd,
  1887.    { &search7_0.value, &search7_1.value },
  1888. };
  1889.    
  1890. static const nir_search_variable replace7 = {
  1891.    { nir_search_value_variable },
  1892.    0, /* a */
  1893.    false,
  1894.    nir_type_invalid,
  1895. };
  1896.    
  1897. static const nir_search_variable search9_0_0 = {
  1898.    { nir_search_value_variable },
  1899.    0, /* a */
  1900.    false,
  1901.    nir_type_invalid,
  1902. };
  1903.  
  1904. static const nir_search_variable search9_0_1 = {
  1905.    { nir_search_value_variable },
  1906.    1, /* b */
  1907.    false,
  1908.    nir_type_invalid,
  1909. };
  1910. static const nir_search_expression search9_0 = {
  1911.    { nir_search_value_expression },
  1912.    nir_op_imul,
  1913.    { &search9_0_0.value, &search9_0_1.value },
  1914. };
  1915.  
  1916. static const nir_search_variable search9_1_0 = {
  1917.    { nir_search_value_variable },
  1918.    0, /* a */
  1919.    false,
  1920.    nir_type_invalid,
  1921. };
  1922.  
  1923. static const nir_search_variable search9_1_1 = {
  1924.    { nir_search_value_variable },
  1925.    2, /* c */
  1926.    false,
  1927.    nir_type_invalid,
  1928. };
  1929. static const nir_search_expression search9_1 = {
  1930.    { nir_search_value_expression },
  1931.    nir_op_imul,
  1932.    { &search9_1_0.value, &search9_1_1.value },
  1933. };
  1934. static const nir_search_expression search9 = {
  1935.    { nir_search_value_expression },
  1936.    nir_op_iadd,
  1937.    { &search9_0.value, &search9_1.value },
  1938. };
  1939.    
  1940. static const nir_search_variable replace9_0 = {
  1941.    { nir_search_value_variable },
  1942.    0, /* a */
  1943.    false,
  1944.    nir_type_invalid,
  1945. };
  1946.  
  1947. static const nir_search_variable replace9_1_0 = {
  1948.    { nir_search_value_variable },
  1949.    1, /* b */
  1950.    false,
  1951.    nir_type_invalid,
  1952. };
  1953.  
  1954. static const nir_search_variable replace9_1_1 = {
  1955.    { nir_search_value_variable },
  1956.    2, /* c */
  1957.    false,
  1958.    nir_type_invalid,
  1959. };
  1960. static const nir_search_expression replace9_1 = {
  1961.    { nir_search_value_expression },
  1962.    nir_op_iadd,
  1963.    { &replace9_1_0.value, &replace9_1_1.value },
  1964. };
  1965. static const nir_search_expression replace9 = {
  1966.    { nir_search_value_expression },
  1967.    nir_op_imul,
  1968.    { &replace9_0.value, &replace9_1.value },
  1969. };
  1970.    
  1971. static const nir_search_variable search11_0_0 = {
  1972.    { nir_search_value_variable },
  1973.    0, /* a */
  1974.    false,
  1975.    nir_type_invalid,
  1976. };
  1977. static const nir_search_expression search11_0 = {
  1978.    { nir_search_value_expression },
  1979.    nir_op_ineg,
  1980.    { &search11_0_0.value },
  1981. };
  1982.  
  1983. static const nir_search_variable search11_1 = {
  1984.    { nir_search_value_variable },
  1985.    0, /* a */
  1986.    false,
  1987.    nir_type_invalid,
  1988. };
  1989. static const nir_search_expression search11 = {
  1990.    { nir_search_value_expression },
  1991.    nir_op_iadd,
  1992.    { &search11_0.value, &search11_1.value },
  1993. };
  1994.    
  1995. static const nir_search_constant replace11 = {
  1996.    { nir_search_value_constant },
  1997.    { 0x0 /* 0 */ },
  1998. };
  1999.    
  2000. static const nir_search_variable search133_0 = {
  2001.    { nir_search_value_variable },
  2002.    0, /* a */
  2003.    false,
  2004.    nir_type_invalid,
  2005. };
  2006.  
  2007. static const nir_search_constant search133_1_0 = {
  2008.    { nir_search_value_constant },
  2009.    { 0x0 /* 0 */ },
  2010. };
  2011.  
  2012. static const nir_search_variable search133_1_1 = {
  2013.    { nir_search_value_variable },
  2014.    1, /* b */
  2015.    false,
  2016.    nir_type_invalid,
  2017. };
  2018. static const nir_search_expression search133_1 = {
  2019.    { nir_search_value_expression },
  2020.    nir_op_isub,
  2021.    { &search133_1_0.value, &search133_1_1.value },
  2022. };
  2023. static const nir_search_expression search133 = {
  2024.    { nir_search_value_expression },
  2025.    nir_op_iadd,
  2026.    { &search133_0.value, &search133_1.value },
  2027. };
  2028.    
  2029. static const nir_search_variable replace133_0 = {
  2030.    { nir_search_value_variable },
  2031.    0, /* a */
  2032.    false,
  2033.    nir_type_invalid,
  2034. };
  2035.  
  2036. static const nir_search_variable replace133_1 = {
  2037.    { nir_search_value_variable },
  2038.    1, /* b */
  2039.    false,
  2040.    nir_type_invalid,
  2041. };
  2042. static const nir_search_expression replace133 = {
  2043.    { nir_search_value_expression },
  2044.    nir_op_isub,
  2045.    { &replace133_0.value, &replace133_1.value },
  2046. };
  2047.  
  2048. static const struct transform nir_opt_algebraic_iadd_xforms[] = {
  2049.    { &search7, &replace7.value, 0 },
  2050.    { &search9, &replace9.value, 0 },
  2051.    { &search11, &replace11.value, 0 },
  2052.    { &search133, &replace133.value, 0 },
  2053. };
  2054.    
  2055. static const nir_search_variable search75_0 = {
  2056.    { nir_search_value_variable },
  2057.    0, /* a */
  2058.    false,
  2059.    nir_type_invalid,
  2060. };
  2061.  
  2062. static const nir_search_constant search75_1 = {
  2063.    { nir_search_value_constant },
  2064.    { 0x0 /* 0.0 */ },
  2065. };
  2066. static const nir_search_expression search75 = {
  2067.    { nir_search_value_expression },
  2068.    nir_op_fand,
  2069.    { &search75_0.value, &search75_1.value },
  2070. };
  2071.    
  2072. static const nir_search_constant replace75 = {
  2073.    { nir_search_value_constant },
  2074.    { 0x0 /* 0.0 */ },
  2075. };
  2076.  
  2077. static const struct transform nir_opt_algebraic_fand_xforms[] = {
  2078.    { &search75, &replace75.value, 0 },
  2079. };
  2080.    
  2081. static const nir_search_variable search2_0_0 = {
  2082.    { nir_search_value_variable },
  2083.    0, /* a */
  2084.    false,
  2085.    nir_type_invalid,
  2086. };
  2087. static const nir_search_expression search2_0 = {
  2088.    { nir_search_value_expression },
  2089.    nir_op_fabs,
  2090.    { &search2_0_0.value },
  2091. };
  2092. static const nir_search_expression search2 = {
  2093.    { nir_search_value_expression },
  2094.    nir_op_fabs,
  2095.    { &search2_0.value },
  2096. };
  2097.    
  2098. static const nir_search_variable replace2_0 = {
  2099.    { nir_search_value_variable },
  2100.    0, /* a */
  2101.    false,
  2102.    nir_type_invalid,
  2103. };
  2104. static const nir_search_expression replace2 = {
  2105.    { nir_search_value_expression },
  2106.    nir_op_fabs,
  2107.    { &replace2_0.value },
  2108. };
  2109.    
  2110. static const nir_search_variable search3_0_0 = {
  2111.    { nir_search_value_variable },
  2112.    0, /* a */
  2113.    false,
  2114.    nir_type_invalid,
  2115. };
  2116. static const nir_search_expression search3_0 = {
  2117.    { nir_search_value_expression },
  2118.    nir_op_fneg,
  2119.    { &search3_0_0.value },
  2120. };
  2121. static const nir_search_expression search3 = {
  2122.    { nir_search_value_expression },
  2123.    nir_op_fabs,
  2124.    { &search3_0.value },
  2125. };
  2126.    
  2127. static const nir_search_variable replace3_0 = {
  2128.    { nir_search_value_variable },
  2129.    0, /* a */
  2130.    false,
  2131.    nir_type_invalid,
  2132. };
  2133. static const nir_search_expression replace3 = {
  2134.    { nir_search_value_expression },
  2135.    nir_op_fabs,
  2136.    { &replace3_0.value },
  2137. };
  2138.    
  2139. static const nir_search_constant search134_0_0 = {
  2140.    { nir_search_value_constant },
  2141.    { 0x0 /* 0.0 */ },
  2142. };
  2143.  
  2144. static const nir_search_variable search134_0_1 = {
  2145.    { nir_search_value_variable },
  2146.    0, /* a */
  2147.    false,
  2148.    nir_type_invalid,
  2149. };
  2150. static const nir_search_expression search134_0 = {
  2151.    { nir_search_value_expression },
  2152.    nir_op_fsub,
  2153.    { &search134_0_0.value, &search134_0_1.value },
  2154. };
  2155. static const nir_search_expression search134 = {
  2156.    { nir_search_value_expression },
  2157.    nir_op_fabs,
  2158.    { &search134_0.value },
  2159. };
  2160.    
  2161. static const nir_search_variable replace134_0 = {
  2162.    { nir_search_value_variable },
  2163.    0, /* a */
  2164.    false,
  2165.    nir_type_invalid,
  2166. };
  2167. static const nir_search_expression replace134 = {
  2168.    { nir_search_value_expression },
  2169.    nir_op_fabs,
  2170.    { &replace134_0.value },
  2171. };
  2172.  
  2173. static const struct transform nir_opt_algebraic_fabs_xforms[] = {
  2174.    { &search2, &replace2.value, 0 },
  2175.    { &search3, &replace3.value, 0 },
  2176.    { &search134, &replace134.value, 0 },
  2177. };
  2178.    
  2179. static const nir_search_variable search71_0 = {
  2180.    { nir_search_value_variable },
  2181.    0, /* a */
  2182.    false,
  2183.    nir_type_invalid,
  2184. };
  2185.  
  2186. static const nir_search_variable search71_1 = {
  2187.    { nir_search_value_variable },
  2188.    0, /* a */
  2189.    false,
  2190.    nir_type_invalid,
  2191. };
  2192. static const nir_search_expression search71 = {
  2193.    { nir_search_value_expression },
  2194.    nir_op_ieq,
  2195.    { &search71_0.value, &search71_1.value },
  2196. };
  2197.    
  2198. static const nir_search_constant replace71 = {
  2199.    { nir_search_value_constant },
  2200.    { NIR_TRUE /* True */ },
  2201. };
  2202.    
  2203. static const nir_search_variable search115_0 = {
  2204.    { nir_search_value_variable },
  2205.    0, /* a */
  2206.    false,
  2207.    nir_type_bool,
  2208. };
  2209.  
  2210. static const nir_search_constant search115_1 = {
  2211.    { nir_search_value_constant },
  2212.    { 0x0 /* 0 */ },
  2213. };
  2214. static const nir_search_expression search115 = {
  2215.    { nir_search_value_expression },
  2216.    nir_op_ieq,
  2217.    { &search115_0.value, &search115_1.value },
  2218. };
  2219.    
  2220. static const nir_search_variable replace115_0 = {
  2221.    { nir_search_value_variable },
  2222.    0, /* a */
  2223.    false,
  2224.    nir_type_invalid,
  2225. };
  2226. static const nir_search_expression replace115 = {
  2227.    { nir_search_value_expression },
  2228.    nir_op_inot,
  2229.    { &replace115_0.value },
  2230. };
  2231.    
  2232. static const nir_search_variable search148_0_0 = {
  2233.    { nir_search_value_variable },
  2234.    0, /* a */
  2235.    false,
  2236.    nir_type_invalid,
  2237. };
  2238.  
  2239. static const nir_search_variable search148_0_1 = {
  2240.    { nir_search_value_variable },
  2241.    1, /* b */
  2242.    true,
  2243.    nir_type_invalid,
  2244. };
  2245.  
  2246. static const nir_search_variable search148_0_2 = {
  2247.    { nir_search_value_variable },
  2248.    2, /* c */
  2249.    true,
  2250.    nir_type_invalid,
  2251. };
  2252. static const nir_search_expression search148_0 = {
  2253.    { nir_search_value_expression },
  2254.    nir_op_bcsel,
  2255.    { &search148_0_0.value, &search148_0_1.value, &search148_0_2.value },
  2256. };
  2257.  
  2258. static const nir_search_variable search148_1 = {
  2259.    { nir_search_value_variable },
  2260.    3, /* d */
  2261.    true,
  2262.    nir_type_invalid,
  2263. };
  2264. static const nir_search_expression search148 = {
  2265.    { nir_search_value_expression },
  2266.    nir_op_ieq,
  2267.    { &search148_0.value, &search148_1.value },
  2268. };
  2269.    
  2270. static const nir_search_variable replace148_0 = {
  2271.    { nir_search_value_variable },
  2272.    0, /* a */
  2273.    false,
  2274.    nir_type_invalid,
  2275. };
  2276.  
  2277. static const nir_search_variable replace148_1_0 = {
  2278.    { nir_search_value_variable },
  2279.    1, /* b */
  2280.    false,
  2281.    nir_type_invalid,
  2282. };
  2283.  
  2284. static const nir_search_variable replace148_1_1 = {
  2285.    { nir_search_value_variable },
  2286.    3, /* d */
  2287.    false,
  2288.    nir_type_invalid,
  2289. };
  2290. static const nir_search_expression replace148_1 = {
  2291.    { nir_search_value_expression },
  2292.    nir_op_ieq,
  2293.    { &replace148_1_0.value, &replace148_1_1.value },
  2294. };
  2295.  
  2296. static const nir_search_variable replace148_2_0 = {
  2297.    { nir_search_value_variable },
  2298.    2, /* c */
  2299.    false,
  2300.    nir_type_invalid,
  2301. };
  2302.  
  2303. static const nir_search_variable replace148_2_1 = {
  2304.    { nir_search_value_variable },
  2305.    3, /* d */
  2306.    false,
  2307.    nir_type_invalid,
  2308. };
  2309. static const nir_search_expression replace148_2 = {
  2310.    { nir_search_value_expression },
  2311.    nir_op_ieq,
  2312.    { &replace148_2_0.value, &replace148_2_1.value },
  2313. };
  2314. static const nir_search_expression replace148 = {
  2315.    { nir_search_value_expression },
  2316.    nir_op_bcsel,
  2317.    { &replace148_0.value, &replace148_1.value, &replace148_2.value },
  2318. };
  2319.    
  2320. static const nir_search_variable search149_0 = {
  2321.    { nir_search_value_variable },
  2322.    0, /* d */
  2323.    true,
  2324.    nir_type_invalid,
  2325. };
  2326.  
  2327. static const nir_search_variable search149_1_0 = {
  2328.    { nir_search_value_variable },
  2329.    1, /* a */
  2330.    false,
  2331.    nir_type_invalid,
  2332. };
  2333.  
  2334. static const nir_search_variable search149_1_1 = {
  2335.    { nir_search_value_variable },
  2336.    2, /* b */
  2337.    true,
  2338.    nir_type_invalid,
  2339. };
  2340.  
  2341. static const nir_search_variable search149_1_2 = {
  2342.    { nir_search_value_variable },
  2343.    3, /* c */
  2344.    true,
  2345.    nir_type_invalid,
  2346. };
  2347. static const nir_search_expression search149_1 = {
  2348.    { nir_search_value_expression },
  2349.    nir_op_bcsel,
  2350.    { &search149_1_0.value, &search149_1_1.value, &search149_1_2.value },
  2351. };
  2352. static const nir_search_expression search149 = {
  2353.    { nir_search_value_expression },
  2354.    nir_op_ieq,
  2355.    { &search149_0.value, &search149_1.value },
  2356. };
  2357.    
  2358. static const nir_search_variable replace149_0 = {
  2359.    { nir_search_value_variable },
  2360.    1, /* a */
  2361.    false,
  2362.    nir_type_invalid,
  2363. };
  2364.  
  2365. static const nir_search_variable replace149_1_0 = {
  2366.    { nir_search_value_variable },
  2367.    0, /* d */
  2368.    false,
  2369.    nir_type_invalid,
  2370. };
  2371.  
  2372. static const nir_search_variable replace149_1_1 = {
  2373.    { nir_search_value_variable },
  2374.    2, /* b */
  2375.    false,
  2376.    nir_type_invalid,
  2377. };
  2378. static const nir_search_expression replace149_1 = {
  2379.    { nir_search_value_expression },
  2380.    nir_op_ieq,
  2381.    { &replace149_1_0.value, &replace149_1_1.value },
  2382. };
  2383.  
  2384. static const nir_search_variable replace149_2_0 = {
  2385.    { nir_search_value_variable },
  2386.    0, /* d */
  2387.    false,
  2388.    nir_type_invalid,
  2389. };
  2390.  
  2391. static const nir_search_variable replace149_2_1 = {
  2392.    { nir_search_value_variable },
  2393.    3, /* c */
  2394.    false,
  2395.    nir_type_invalid,
  2396. };
  2397. static const nir_search_expression replace149_2 = {
  2398.    { nir_search_value_expression },
  2399.    nir_op_ieq,
  2400.    { &replace149_2_0.value, &replace149_2_1.value },
  2401. };
  2402. static const nir_search_expression replace149 = {
  2403.    { nir_search_value_expression },
  2404.    nir_op_bcsel,
  2405.    { &replace149_0.value, &replace149_1.value, &replace149_2.value },
  2406. };
  2407.  
  2408. static const struct transform nir_opt_algebraic_ieq_xforms[] = {
  2409.    { &search71, &replace71.value, 0 },
  2410.    { &search115, &replace115.value, 0 },
  2411.    { &search148, &replace148.value, 0 },
  2412.    { &search149, &replace149.value, 0 },
  2413. };
  2414.    
  2415. static const nir_search_variable search47_0 = {
  2416.    { nir_search_value_variable },
  2417.    0, /* a */
  2418.    false,
  2419.    nir_type_invalid,
  2420. };
  2421.  
  2422. static const nir_search_variable search47_1 = {
  2423.    { nir_search_value_variable },
  2424.    0, /* a */
  2425.    false,
  2426.    nir_type_invalid,
  2427. };
  2428. static const nir_search_expression search47 = {
  2429.    { nir_search_value_expression },
  2430.    nir_op_imin,
  2431.    { &search47_0.value, &search47_1.value },
  2432. };
  2433.    
  2434. static const nir_search_variable replace47 = {
  2435.    { nir_search_value_variable },
  2436.    0, /* a */
  2437.    false,
  2438.    nir_type_invalid,
  2439. };
  2440.  
  2441. static const struct transform nir_opt_algebraic_imin_xforms[] = {
  2442.    { &search47, &replace47.value, 0 },
  2443. };
  2444.    
  2445. static const nir_search_variable search101_0_0 = {
  2446.    { nir_search_value_variable },
  2447.    0, /* a */
  2448.    false,
  2449.    nir_type_invalid,
  2450. };
  2451. static const nir_search_expression search101_0 = {
  2452.    { nir_search_value_expression },
  2453.    nir_op_fexp2,
  2454.    { &search101_0_0.value },
  2455. };
  2456. static const nir_search_expression search101 = {
  2457.    { nir_search_value_expression },
  2458.    nir_op_frsq,
  2459.    { &search101_0.value },
  2460. };
  2461.    
  2462. static const nir_search_constant replace101_0_0 = {
  2463.    { nir_search_value_constant },
  2464.    { 0xbf000000 /* -0.5 */ },
  2465. };
  2466.  
  2467. static const nir_search_variable replace101_0_1 = {
  2468.    { nir_search_value_variable },
  2469.    0, /* a */
  2470.    false,
  2471.    nir_type_invalid,
  2472. };
  2473. static const nir_search_expression replace101_0 = {
  2474.    { nir_search_value_expression },
  2475.    nir_op_fmul,
  2476.    { &replace101_0_0.value, &replace101_0_1.value },
  2477. };
  2478. static const nir_search_expression replace101 = {
  2479.    { nir_search_value_expression },
  2480.    nir_op_fexp2,
  2481.    { &replace101_0.value },
  2482. };
  2483.  
  2484. static const struct transform nir_opt_algebraic_frsq_xforms[] = {
  2485.    { &search101, &replace101.value, 0 },
  2486. };
  2487.    
  2488. static const nir_search_variable search1_0_0 = {
  2489.    { nir_search_value_variable },
  2490.    0, /* a */
  2491.    false,
  2492.    nir_type_invalid,
  2493. };
  2494. static const nir_search_expression search1_0 = {
  2495.    { nir_search_value_expression },
  2496.    nir_op_ineg,
  2497.    { &search1_0_0.value },
  2498. };
  2499. static const nir_search_expression search1 = {
  2500.    { nir_search_value_expression },
  2501.    nir_op_ineg,
  2502.    { &search1_0.value },
  2503. };
  2504.    
  2505. static const nir_search_variable replace1 = {
  2506.    { nir_search_value_variable },
  2507.    0, /* a */
  2508.    false,
  2509.    nir_type_invalid,
  2510. };
  2511.    
  2512. static const nir_search_variable search131_0 = {
  2513.    { nir_search_value_variable },
  2514.    0, /* a */
  2515.    false,
  2516.    nir_type_invalid,
  2517. };
  2518. static const nir_search_expression search131 = {
  2519.    { nir_search_value_expression },
  2520.    nir_op_ineg,
  2521.    { &search131_0.value },
  2522. };
  2523.    
  2524. static const nir_search_constant replace131_0 = {
  2525.    { nir_search_value_constant },
  2526.    { 0x0 /* 0 */ },
  2527. };
  2528.  
  2529. static const nir_search_variable replace131_1 = {
  2530.    { nir_search_value_variable },
  2531.    0, /* a */
  2532.    false,
  2533.    nir_type_invalid,
  2534. };
  2535. static const nir_search_expression replace131 = {
  2536.    { nir_search_value_expression },
  2537.    nir_op_isub,
  2538.    { &replace131_0.value, &replace131_1.value },
  2539. };
  2540.  
  2541. static const struct transform nir_opt_algebraic_ineg_xforms[] = {
  2542.    { &search1, &replace1.value, 0 },
  2543.    { &search131, &replace131.value, 13 },
  2544. };
  2545.    
  2546. static const nir_search_variable search93_0 = {
  2547.    { nir_search_value_variable },
  2548.    0, /* a */
  2549.    false,
  2550.    nir_type_invalid,
  2551. };
  2552.  
  2553. static const nir_search_variable search93_1 = {
  2554.    { nir_search_value_variable },
  2555.    1, /* b */
  2556.    false,
  2557.    nir_type_invalid,
  2558. };
  2559. static const nir_search_expression search93 = {
  2560.    { nir_search_value_expression },
  2561.    nir_op_fpow,
  2562.    { &search93_0.value, &search93_1.value },
  2563. };
  2564.    
  2565. static const nir_search_variable replace93_0_0_0 = {
  2566.    { nir_search_value_variable },
  2567.    0, /* a */
  2568.    false,
  2569.    nir_type_invalid,
  2570. };
  2571. static const nir_search_expression replace93_0_0 = {
  2572.    { nir_search_value_expression },
  2573.    nir_op_flog2,
  2574.    { &replace93_0_0_0.value },
  2575. };
  2576.  
  2577. static const nir_search_variable replace93_0_1 = {
  2578.    { nir_search_value_variable },
  2579.    1, /* b */
  2580.    false,
  2581.    nir_type_invalid,
  2582. };
  2583. static const nir_search_expression replace93_0 = {
  2584.    { nir_search_value_expression },
  2585.    nir_op_fmul,
  2586.    { &replace93_0_0.value, &replace93_0_1.value },
  2587. };
  2588. static const nir_search_expression replace93 = {
  2589.    { nir_search_value_expression },
  2590.    nir_op_fexp2,
  2591.    { &replace93_0.value },
  2592. };
  2593.    
  2594. static const nir_search_variable search95_0 = {
  2595.    { nir_search_value_variable },
  2596.    0, /* a */
  2597.    false,
  2598.    nir_type_invalid,
  2599. };
  2600.  
  2601. static const nir_search_constant search95_1 = {
  2602.    { nir_search_value_constant },
  2603.    { 0x3f800000 /* 1.0 */ },
  2604. };
  2605. static const nir_search_expression search95 = {
  2606.    { nir_search_value_expression },
  2607.    nir_op_fpow,
  2608.    { &search95_0.value, &search95_1.value },
  2609. };
  2610.    
  2611. static const nir_search_variable replace95 = {
  2612.    { nir_search_value_variable },
  2613.    0, /* a */
  2614.    false,
  2615.    nir_type_invalid,
  2616. };
  2617.    
  2618. static const nir_search_variable search96_0 = {
  2619.    { nir_search_value_variable },
  2620.    0, /* a */
  2621.    false,
  2622.    nir_type_invalid,
  2623. };
  2624.  
  2625. static const nir_search_constant search96_1 = {
  2626.    { nir_search_value_constant },
  2627.    { 0x40000000 /* 2.0 */ },
  2628. };
  2629. static const nir_search_expression search96 = {
  2630.    { nir_search_value_expression },
  2631.    nir_op_fpow,
  2632.    { &search96_0.value, &search96_1.value },
  2633. };
  2634.    
  2635. static const nir_search_variable replace96_0 = {
  2636.    { nir_search_value_variable },
  2637.    0, /* a */
  2638.    false,
  2639.    nir_type_invalid,
  2640. };
  2641.  
  2642. static const nir_search_variable replace96_1 = {
  2643.    { nir_search_value_variable },
  2644.    0, /* a */
  2645.    false,
  2646.    nir_type_invalid,
  2647. };
  2648. static const nir_search_expression replace96 = {
  2649.    { nir_search_value_expression },
  2650.    nir_op_fmul,
  2651.    { &replace96_0.value, &replace96_1.value },
  2652. };
  2653.    
  2654. static const nir_search_variable search97_0 = {
  2655.    { nir_search_value_variable },
  2656.    0, /* a */
  2657.    false,
  2658.    nir_type_invalid,
  2659. };
  2660.  
  2661. static const nir_search_constant search97_1 = {
  2662.    { nir_search_value_constant },
  2663.    { 0x40800000 /* 4.0 */ },
  2664. };
  2665. static const nir_search_expression search97 = {
  2666.    { nir_search_value_expression },
  2667.    nir_op_fpow,
  2668.    { &search97_0.value, &search97_1.value },
  2669. };
  2670.    
  2671. static const nir_search_variable replace97_0_0 = {
  2672.    { nir_search_value_variable },
  2673.    0, /* a */
  2674.    false,
  2675.    nir_type_invalid,
  2676. };
  2677.  
  2678. static const nir_search_variable replace97_0_1 = {
  2679.    { nir_search_value_variable },
  2680.    0, /* a */
  2681.    false,
  2682.    nir_type_invalid,
  2683. };
  2684. static const nir_search_expression replace97_0 = {
  2685.    { nir_search_value_expression },
  2686.    nir_op_fmul,
  2687.    { &replace97_0_0.value, &replace97_0_1.value },
  2688. };
  2689.  
  2690. static const nir_search_variable replace97_1_0 = {
  2691.    { nir_search_value_variable },
  2692.    0, /* a */
  2693.    false,
  2694.    nir_type_invalid,
  2695. };
  2696.  
  2697. static const nir_search_variable replace97_1_1 = {
  2698.    { nir_search_value_variable },
  2699.    0, /* a */
  2700.    false,
  2701.    nir_type_invalid,
  2702. };
  2703. static const nir_search_expression replace97_1 = {
  2704.    { nir_search_value_expression },
  2705.    nir_op_fmul,
  2706.    { &replace97_1_0.value, &replace97_1_1.value },
  2707. };
  2708. static const nir_search_expression replace97 = {
  2709.    { nir_search_value_expression },
  2710.    nir_op_fmul,
  2711.    { &replace97_0.value, &replace97_1.value },
  2712. };
  2713.    
  2714. static const nir_search_constant search98_0 = {
  2715.    { nir_search_value_constant },
  2716.    { 0x40000000 /* 2.0 */ },
  2717. };
  2718.  
  2719. static const nir_search_variable search98_1 = {
  2720.    { nir_search_value_variable },
  2721.    0, /* a */
  2722.    false,
  2723.    nir_type_invalid,
  2724. };
  2725. static const nir_search_expression search98 = {
  2726.    { nir_search_value_expression },
  2727.    nir_op_fpow,
  2728.    { &search98_0.value, &search98_1.value },
  2729. };
  2730.    
  2731. static const nir_search_variable replace98_0 = {
  2732.    { nir_search_value_variable },
  2733.    0, /* a */
  2734.    false,
  2735.    nir_type_invalid,
  2736. };
  2737. static const nir_search_expression replace98 = {
  2738.    { nir_search_value_expression },
  2739.    nir_op_fexp2,
  2740.    { &replace98_0.value },
  2741. };
  2742.  
  2743. static const struct transform nir_opt_algebraic_fpow_xforms[] = {
  2744.    { &search93, &replace93.value, 8 },
  2745.    { &search95, &replace95.value, 0 },
  2746.    { &search96, &replace96.value, 0 },
  2747.    { &search97, &replace97.value, 0 },
  2748.    { &search98, &replace98.value, 0 },
  2749. };
  2750.    
  2751. static const nir_search_variable search70_0 = {
  2752.    { nir_search_value_variable },
  2753.    0, /* a */
  2754.    false,
  2755.    nir_type_invalid,
  2756. };
  2757.  
  2758. static const nir_search_variable search70_1 = {
  2759.    { nir_search_value_variable },
  2760.    0, /* a */
  2761.    false,
  2762.    nir_type_invalid,
  2763. };
  2764. static const nir_search_expression search70 = {
  2765.    { nir_search_value_expression },
  2766.    nir_op_ige,
  2767.    { &search70_0.value, &search70_1.value },
  2768. };
  2769.    
  2770. static const nir_search_constant replace70 = {
  2771.    { nir_search_value_constant },
  2772.    { NIR_TRUE /* True */ },
  2773. };
  2774.    
  2775. static const nir_search_variable search146_0_0 = {
  2776.    { nir_search_value_variable },
  2777.    0, /* a */
  2778.    false,
  2779.    nir_type_invalid,
  2780. };
  2781.  
  2782. static const nir_search_variable search146_0_1 = {
  2783.    { nir_search_value_variable },
  2784.    1, /* b */
  2785.    true,
  2786.    nir_type_invalid,
  2787. };
  2788.  
  2789. static const nir_search_variable search146_0_2 = {
  2790.    { nir_search_value_variable },
  2791.    2, /* c */
  2792.    true,
  2793.    nir_type_invalid,
  2794. };
  2795. static const nir_search_expression search146_0 = {
  2796.    { nir_search_value_expression },
  2797.    nir_op_bcsel,
  2798.    { &search146_0_0.value, &search146_0_1.value, &search146_0_2.value },
  2799. };
  2800.  
  2801. static const nir_search_variable search146_1 = {
  2802.    { nir_search_value_variable },
  2803.    3, /* d */
  2804.    true,
  2805.    nir_type_invalid,
  2806. };
  2807. static const nir_search_expression search146 = {
  2808.    { nir_search_value_expression },
  2809.    nir_op_ige,
  2810.    { &search146_0.value, &search146_1.value },
  2811. };
  2812.    
  2813. static const nir_search_variable replace146_0 = {
  2814.    { nir_search_value_variable },
  2815.    0, /* a */
  2816.    false,
  2817.    nir_type_invalid,
  2818. };
  2819.  
  2820. static const nir_search_variable replace146_1_0 = {
  2821.    { nir_search_value_variable },
  2822.    1, /* b */
  2823.    false,
  2824.    nir_type_invalid,
  2825. };
  2826.  
  2827. static const nir_search_variable replace146_1_1 = {
  2828.    { nir_search_value_variable },
  2829.    3, /* d */
  2830.    false,
  2831.    nir_type_invalid,
  2832. };
  2833. static const nir_search_expression replace146_1 = {
  2834.    { nir_search_value_expression },
  2835.    nir_op_ige,
  2836.    { &replace146_1_0.value, &replace146_1_1.value },
  2837. };
  2838.  
  2839. static const nir_search_variable replace146_2_0 = {
  2840.    { nir_search_value_variable },
  2841.    2, /* c */
  2842.    false,
  2843.    nir_type_invalid,
  2844. };
  2845.  
  2846. static const nir_search_variable replace146_2_1 = {
  2847.    { nir_search_value_variable },
  2848.    3, /* d */
  2849.    false,
  2850.    nir_type_invalid,
  2851. };
  2852. static const nir_search_expression replace146_2 = {
  2853.    { nir_search_value_expression },
  2854.    nir_op_ige,
  2855.    { &replace146_2_0.value, &replace146_2_1.value },
  2856. };
  2857. static const nir_search_expression replace146 = {
  2858.    { nir_search_value_expression },
  2859.    nir_op_bcsel,
  2860.    { &replace146_0.value, &replace146_1.value, &replace146_2.value },
  2861. };
  2862.    
  2863. static const nir_search_variable search147_0 = {
  2864.    { nir_search_value_variable },
  2865.    0, /* d */
  2866.    true,
  2867.    nir_type_invalid,
  2868. };
  2869.  
  2870. static const nir_search_variable search147_1_0 = {
  2871.    { nir_search_value_variable },
  2872.    1, /* a */
  2873.    false,
  2874.    nir_type_invalid,
  2875. };
  2876.  
  2877. static const nir_search_variable search147_1_1 = {
  2878.    { nir_search_value_variable },
  2879.    2, /* b */
  2880.    true,
  2881.    nir_type_invalid,
  2882. };
  2883.  
  2884. static const nir_search_variable search147_1_2 = {
  2885.    { nir_search_value_variable },
  2886.    3, /* c */
  2887.    true,
  2888.    nir_type_invalid,
  2889. };
  2890. static const nir_search_expression search147_1 = {
  2891.    { nir_search_value_expression },
  2892.    nir_op_bcsel,
  2893.    { &search147_1_0.value, &search147_1_1.value, &search147_1_2.value },
  2894. };
  2895. static const nir_search_expression search147 = {
  2896.    { nir_search_value_expression },
  2897.    nir_op_ige,
  2898.    { &search147_0.value, &search147_1.value },
  2899. };
  2900.    
  2901. static const nir_search_variable replace147_0 = {
  2902.    { nir_search_value_variable },
  2903.    1, /* a */
  2904.    false,
  2905.    nir_type_invalid,
  2906. };
  2907.  
  2908. static const nir_search_variable replace147_1_0 = {
  2909.    { nir_search_value_variable },
  2910.    0, /* d */
  2911.    false,
  2912.    nir_type_invalid,
  2913. };
  2914.  
  2915. static const nir_search_variable replace147_1_1 = {
  2916.    { nir_search_value_variable },
  2917.    2, /* b */
  2918.    false,
  2919.    nir_type_invalid,
  2920. };
  2921. static const nir_search_expression replace147_1 = {
  2922.    { nir_search_value_expression },
  2923.    nir_op_ige,
  2924.    { &replace147_1_0.value, &replace147_1_1.value },
  2925. };
  2926.  
  2927. static const nir_search_variable replace147_2_0 = {
  2928.    { nir_search_value_variable },
  2929.    0, /* d */
  2930.    false,
  2931.    nir_type_invalid,
  2932. };
  2933.  
  2934. static const nir_search_variable replace147_2_1 = {
  2935.    { nir_search_value_variable },
  2936.    3, /* c */
  2937.    false,
  2938.    nir_type_invalid,
  2939. };
  2940. static const nir_search_expression replace147_2 = {
  2941.    { nir_search_value_expression },
  2942.    nir_op_ige,
  2943.    { &replace147_2_0.value, &replace147_2_1.value },
  2944. };
  2945. static const nir_search_expression replace147 = {
  2946.    { nir_search_value_expression },
  2947.    nir_op_bcsel,
  2948.    { &replace147_0.value, &replace147_1.value, &replace147_2.value },
  2949. };
  2950.  
  2951. static const struct transform nir_opt_algebraic_ige_xforms[] = {
  2952.    { &search70, &replace70.value, 0 },
  2953.    { &search146, &replace146.value, 0 },
  2954.    { &search147, &replace147.value, 0 },
  2955. };
  2956.    
  2957. static const nir_search_constant search109_0 = {
  2958.    { nir_search_value_constant },
  2959.    { 0x3f800000 /* 1.0 */ },
  2960. };
  2961.  
  2962. static const nir_search_variable search109_1 = {
  2963.    { nir_search_value_variable },
  2964.    0, /* a */
  2965.    false,
  2966.    nir_type_invalid,
  2967. };
  2968. static const nir_search_expression search109 = {
  2969.    { nir_search_value_expression },
  2970.    nir_op_fdiv,
  2971.    { &search109_0.value, &search109_1.value },
  2972. };
  2973.    
  2974. static const nir_search_variable replace109_0 = {
  2975.    { nir_search_value_variable },
  2976.    0, /* a */
  2977.    false,
  2978.    nir_type_invalid,
  2979. };
  2980. static const nir_search_expression replace109 = {
  2981.    { nir_search_value_expression },
  2982.    nir_op_frcp,
  2983.    { &replace109_0.value },
  2984. };
  2985.  
  2986. static const struct transform nir_opt_algebraic_fdiv_xforms[] = {
  2987.    { &search109, &replace109.value, 0 },
  2988. };
  2989.    
  2990. static const nir_search_variable search6_0 = {
  2991.    { nir_search_value_variable },
  2992.    0, /* a */
  2993.    false,
  2994.    nir_type_invalid,
  2995. };
  2996.  
  2997. static const nir_search_constant search6_1 = {
  2998.    { nir_search_value_constant },
  2999.    { 0x0 /* 0.0 */ },
  3000. };
  3001. static const nir_search_expression search6 = {
  3002.    { nir_search_value_expression },
  3003.    nir_op_fadd,
  3004.    { &search6_0.value, &search6_1.value },
  3005. };
  3006.    
  3007. static const nir_search_variable replace6 = {
  3008.    { nir_search_value_variable },
  3009.    0, /* a */
  3010.    false,
  3011.    nir_type_invalid,
  3012. };
  3013.    
  3014. static const nir_search_variable search8_0_0 = {
  3015.    { nir_search_value_variable },
  3016.    0, /* a */
  3017.    false,
  3018.    nir_type_invalid,
  3019. };
  3020.  
  3021. static const nir_search_variable search8_0_1 = {
  3022.    { nir_search_value_variable },
  3023.    1, /* b */
  3024.    false,
  3025.    nir_type_invalid,
  3026. };
  3027. static const nir_search_expression search8_0 = {
  3028.    { nir_search_value_expression },
  3029.    nir_op_fmul,
  3030.    { &search8_0_0.value, &search8_0_1.value },
  3031. };
  3032.  
  3033. static const nir_search_variable search8_1_0 = {
  3034.    { nir_search_value_variable },
  3035.    0, /* a */
  3036.    false,
  3037.    nir_type_invalid,
  3038. };
  3039.  
  3040. static const nir_search_variable search8_1_1 = {
  3041.    { nir_search_value_variable },
  3042.    2, /* c */
  3043.    false,
  3044.    nir_type_invalid,
  3045. };
  3046. static const nir_search_expression search8_1 = {
  3047.    { nir_search_value_expression },
  3048.    nir_op_fmul,
  3049.    { &search8_1_0.value, &search8_1_1.value },
  3050. };
  3051. static const nir_search_expression search8 = {
  3052.    { nir_search_value_expression },
  3053.    nir_op_fadd,
  3054.    { &search8_0.value, &search8_1.value },
  3055. };
  3056.    
  3057. static const nir_search_variable replace8_0 = {
  3058.    { nir_search_value_variable },
  3059.    0, /* a */
  3060.    false,
  3061.    nir_type_invalid,
  3062. };
  3063.  
  3064. static const nir_search_variable replace8_1_0 = {
  3065.    { nir_search_value_variable },
  3066.    1, /* b */
  3067.    false,
  3068.    nir_type_invalid,
  3069. };
  3070.  
  3071. static const nir_search_variable replace8_1_1 = {
  3072.    { nir_search_value_variable },
  3073.    2, /* c */
  3074.    false,
  3075.    nir_type_invalid,
  3076. };
  3077. static const nir_search_expression replace8_1 = {
  3078.    { nir_search_value_expression },
  3079.    nir_op_fadd,
  3080.    { &replace8_1_0.value, &replace8_1_1.value },
  3081. };
  3082. static const nir_search_expression replace8 = {
  3083.    { nir_search_value_expression },
  3084.    nir_op_fmul,
  3085.    { &replace8_0.value, &replace8_1.value },
  3086. };
  3087.    
  3088. static const nir_search_variable search10_0_0 = {
  3089.    { nir_search_value_variable },
  3090.    0, /* a */
  3091.    false,
  3092.    nir_type_invalid,
  3093. };
  3094. static const nir_search_expression search10_0 = {
  3095.    { nir_search_value_expression },
  3096.    nir_op_fneg,
  3097.    { &search10_0_0.value },
  3098. };
  3099.  
  3100. static const nir_search_variable search10_1 = {
  3101.    { nir_search_value_variable },
  3102.    0, /* a */
  3103.    false,
  3104.    nir_type_invalid,
  3105. };
  3106. static const nir_search_expression search10 = {
  3107.    { nir_search_value_expression },
  3108.    nir_op_fadd,
  3109.    { &search10_0.value, &search10_1.value },
  3110. };
  3111.    
  3112. static const nir_search_constant replace10 = {
  3113.    { nir_search_value_constant },
  3114.    { 0x0 /* 0.0 */ },
  3115. };
  3116.    
  3117. static const nir_search_variable search28_0_0 = {
  3118.    { nir_search_value_variable },
  3119.    0, /* a */
  3120.    false,
  3121.    nir_type_invalid,
  3122. };
  3123.  
  3124. static const nir_search_constant search28_0_1_0 = {
  3125.    { nir_search_value_constant },
  3126.    { 0x3f800000 /* 1.0 */ },
  3127. };
  3128.  
  3129. static const nir_search_variable search28_0_1_1_0 = {
  3130.    { nir_search_value_variable },
  3131.    1, /* c */
  3132.    false,
  3133.    nir_type_invalid,
  3134. };
  3135. static const nir_search_expression search28_0_1_1 = {
  3136.    { nir_search_value_expression },
  3137.    nir_op_fneg,
  3138.    { &search28_0_1_1_0.value },
  3139. };
  3140. static const nir_search_expression search28_0_1 = {
  3141.    { nir_search_value_expression },
  3142.    nir_op_fadd,
  3143.    { &search28_0_1_0.value, &search28_0_1_1.value },
  3144. };
  3145. static const nir_search_expression search28_0 = {
  3146.    { nir_search_value_expression },
  3147.    nir_op_fmul,
  3148.    { &search28_0_0.value, &search28_0_1.value },
  3149. };
  3150.  
  3151. static const nir_search_variable search28_1_0 = {
  3152.    { nir_search_value_variable },
  3153.    2, /* b */
  3154.    false,
  3155.    nir_type_invalid,
  3156. };
  3157.  
  3158. static const nir_search_variable search28_1_1 = {
  3159.    { nir_search_value_variable },
  3160.    1, /* c */
  3161.    false,
  3162.    nir_type_invalid,
  3163. };
  3164. static const nir_search_expression search28_1 = {
  3165.    { nir_search_value_expression },
  3166.    nir_op_fmul,
  3167.    { &search28_1_0.value, &search28_1_1.value },
  3168. };
  3169. static const nir_search_expression search28 = {
  3170.    { nir_search_value_expression },
  3171.    nir_op_fadd,
  3172.    { &search28_0.value, &search28_1.value },
  3173. };
  3174.    
  3175. static const nir_search_variable replace28_0 = {
  3176.    { nir_search_value_variable },
  3177.    0, /* a */
  3178.    false,
  3179.    nir_type_invalid,
  3180. };
  3181.  
  3182. static const nir_search_variable replace28_1 = {
  3183.    { nir_search_value_variable },
  3184.    2, /* b */
  3185.    false,
  3186.    nir_type_invalid,
  3187. };
  3188.  
  3189. static const nir_search_variable replace28_2 = {
  3190.    { nir_search_value_variable },
  3191.    1, /* c */
  3192.    false,
  3193.    nir_type_invalid,
  3194. };
  3195. static const nir_search_expression replace28 = {
  3196.    { nir_search_value_expression },
  3197.    nir_op_flrp,
  3198.    { &replace28_0.value, &replace28_1.value, &replace28_2.value },
  3199. };
  3200.    
  3201. static const nir_search_variable search29_0 = {
  3202.    { nir_search_value_variable },
  3203.    0, /* a */
  3204.    false,
  3205.    nir_type_invalid,
  3206. };
  3207.  
  3208. static const nir_search_variable search29_1_0 = {
  3209.    { nir_search_value_variable },
  3210.    1, /* c */
  3211.    false,
  3212.    nir_type_invalid,
  3213. };
  3214.  
  3215. static const nir_search_variable search29_1_1_0 = {
  3216.    { nir_search_value_variable },
  3217.    2, /* b */
  3218.    false,
  3219.    nir_type_invalid,
  3220. };
  3221.  
  3222. static const nir_search_variable search29_1_1_1_0 = {
  3223.    { nir_search_value_variable },
  3224.    0, /* a */
  3225.    false,
  3226.    nir_type_invalid,
  3227. };
  3228. static const nir_search_expression search29_1_1_1 = {
  3229.    { nir_search_value_expression },
  3230.    nir_op_fneg,
  3231.    { &search29_1_1_1_0.value },
  3232. };
  3233. static const nir_search_expression search29_1_1 = {
  3234.    { nir_search_value_expression },
  3235.    nir_op_fadd,
  3236.    { &search29_1_1_0.value, &search29_1_1_1.value },
  3237. };
  3238. static const nir_search_expression search29_1 = {
  3239.    { nir_search_value_expression },
  3240.    nir_op_fmul,
  3241.    { &search29_1_0.value, &search29_1_1.value },
  3242. };
  3243. static const nir_search_expression search29 = {
  3244.    { nir_search_value_expression },
  3245.    nir_op_fadd,
  3246.    { &search29_0.value, &search29_1.value },
  3247. };
  3248.    
  3249. static const nir_search_variable replace29_0 = {
  3250.    { nir_search_value_variable },
  3251.    0, /* a */
  3252.    false,
  3253.    nir_type_invalid,
  3254. };
  3255.  
  3256. static const nir_search_variable replace29_1 = {
  3257.    { nir_search_value_variable },
  3258.    2, /* b */
  3259.    false,
  3260.    nir_type_invalid,
  3261. };
  3262.  
  3263. static const nir_search_variable replace29_2 = {
  3264.    { nir_search_value_variable },
  3265.    1, /* c */
  3266.    false,
  3267.    nir_type_invalid,
  3268. };
  3269. static const nir_search_expression replace29 = {
  3270.    { nir_search_value_expression },
  3271.    nir_op_flrp,
  3272.    { &replace29_0.value, &replace29_1.value, &replace29_2.value },
  3273. };
  3274.    
  3275. static const nir_search_variable search31_0_0 = {
  3276.    { nir_search_value_variable },
  3277.    0, /* a */
  3278.    false,
  3279.    nir_type_invalid,
  3280. };
  3281.  
  3282. static const nir_search_variable search31_0_1 = {
  3283.    { nir_search_value_variable },
  3284.    1, /* b */
  3285.    false,
  3286.    nir_type_invalid,
  3287. };
  3288. static const nir_search_expression search31_0 = {
  3289.    { nir_search_value_expression },
  3290.    nir_op_fmul,
  3291.    { &search31_0_0.value, &search31_0_1.value },
  3292. };
  3293.  
  3294. static const nir_search_variable search31_1 = {
  3295.    { nir_search_value_variable },
  3296.    2, /* c */
  3297.    false,
  3298.    nir_type_invalid,
  3299. };
  3300. static const nir_search_expression search31 = {
  3301.    { nir_search_value_expression },
  3302.    nir_op_fadd,
  3303.    { &search31_0.value, &search31_1.value },
  3304. };
  3305.    
  3306. static const nir_search_variable replace31_0 = {
  3307.    { nir_search_value_variable },
  3308.    0, /* a */
  3309.    false,
  3310.    nir_type_invalid,
  3311. };
  3312.  
  3313. static const nir_search_variable replace31_1 = {
  3314.    { nir_search_value_variable },
  3315.    1, /* b */
  3316.    false,
  3317.    nir_type_invalid,
  3318. };
  3319.  
  3320. static const nir_search_variable replace31_2 = {
  3321.    { nir_search_value_variable },
  3322.    2, /* c */
  3323.    false,
  3324.    nir_type_invalid,
  3325. };
  3326. static const nir_search_expression replace31 = {
  3327.    { nir_search_value_expression },
  3328.    nir_op_ffma,
  3329.    { &replace31_0.value, &replace31_1.value, &replace31_2.value },
  3330. };
  3331.    
  3332. static const nir_search_variable search106_0_0 = {
  3333.    { nir_search_value_variable },
  3334.    0, /* a */
  3335.    false,
  3336.    nir_type_invalid,
  3337. };
  3338. static const nir_search_expression search106_0 = {
  3339.    { nir_search_value_expression },
  3340.    nir_op_flog2,
  3341.    { &search106_0_0.value },
  3342. };
  3343.  
  3344. static const nir_search_variable search106_1_0 = {
  3345.    { nir_search_value_variable },
  3346.    1, /* b */
  3347.    false,
  3348.    nir_type_invalid,
  3349. };
  3350. static const nir_search_expression search106_1 = {
  3351.    { nir_search_value_expression },
  3352.    nir_op_flog2,
  3353.    { &search106_1_0.value },
  3354. };
  3355. static const nir_search_expression search106 = {
  3356.    { nir_search_value_expression },
  3357.    nir_op_fadd,
  3358.    { &search106_0.value, &search106_1.value },
  3359. };
  3360.    
  3361. static const nir_search_variable replace106_0_0 = {
  3362.    { nir_search_value_variable },
  3363.    0, /* a */
  3364.    false,
  3365.    nir_type_invalid,
  3366. };
  3367.  
  3368. static const nir_search_variable replace106_0_1 = {
  3369.    { nir_search_value_variable },
  3370.    1, /* b */
  3371.    false,
  3372.    nir_type_invalid,
  3373. };
  3374. static const nir_search_expression replace106_0 = {
  3375.    { nir_search_value_expression },
  3376.    nir_op_fmul,
  3377.    { &replace106_0_0.value, &replace106_0_1.value },
  3378. };
  3379. static const nir_search_expression replace106 = {
  3380.    { nir_search_value_expression },
  3381.    nir_op_flog2,
  3382.    { &replace106_0.value },
  3383. };
  3384.    
  3385. static const nir_search_variable search107_0_0 = {
  3386.    { nir_search_value_variable },
  3387.    0, /* a */
  3388.    false,
  3389.    nir_type_invalid,
  3390. };
  3391. static const nir_search_expression search107_0 = {
  3392.    { nir_search_value_expression },
  3393.    nir_op_flog2,
  3394.    { &search107_0_0.value },
  3395. };
  3396.  
  3397. static const nir_search_variable search107_1_0_0 = {
  3398.    { nir_search_value_variable },
  3399.    1, /* b */
  3400.    false,
  3401.    nir_type_invalid,
  3402. };
  3403. static const nir_search_expression search107_1_0 = {
  3404.    { nir_search_value_expression },
  3405.    nir_op_flog2,
  3406.    { &search107_1_0_0.value },
  3407. };
  3408. static const nir_search_expression search107_1 = {
  3409.    { nir_search_value_expression },
  3410.    nir_op_fneg,
  3411.    { &search107_1_0.value },
  3412. };
  3413. static const nir_search_expression search107 = {
  3414.    { nir_search_value_expression },
  3415.    nir_op_fadd,
  3416.    { &search107_0.value, &search107_1.value },
  3417. };
  3418.    
  3419. static const nir_search_variable replace107_0_0 = {
  3420.    { nir_search_value_variable },
  3421.    0, /* a */
  3422.    false,
  3423.    nir_type_invalid,
  3424. };
  3425.  
  3426. static const nir_search_variable replace107_0_1 = {
  3427.    { nir_search_value_variable },
  3428.    1, /* b */
  3429.    false,
  3430.    nir_type_invalid,
  3431. };
  3432. static const nir_search_expression replace107_0 = {
  3433.    { nir_search_value_expression },
  3434.    nir_op_fdiv,
  3435.    { &replace107_0_0.value, &replace107_0_1.value },
  3436. };
  3437. static const nir_search_expression replace107 = {
  3438.    { nir_search_value_expression },
  3439.    nir_op_flog2,
  3440.    { &replace107_0.value },
  3441. };
  3442.    
  3443. static const nir_search_variable search132_0 = {
  3444.    { nir_search_value_variable },
  3445.    0, /* a */
  3446.    false,
  3447.    nir_type_invalid,
  3448. };
  3449.  
  3450. static const nir_search_constant search132_1_0 = {
  3451.    { nir_search_value_constant },
  3452.    { 0x0 /* 0.0 */ },
  3453. };
  3454.  
  3455. static const nir_search_variable search132_1_1 = {
  3456.    { nir_search_value_variable },
  3457.    1, /* b */
  3458.    false,
  3459.    nir_type_invalid,
  3460. };
  3461. static const nir_search_expression search132_1 = {
  3462.    { nir_search_value_expression },
  3463.    nir_op_fsub,
  3464.    { &search132_1_0.value, &search132_1_1.value },
  3465. };
  3466. static const nir_search_expression search132 = {
  3467.    { nir_search_value_expression },
  3468.    nir_op_fadd,
  3469.    { &search132_0.value, &search132_1.value },
  3470. };
  3471.    
  3472. static const nir_search_variable replace132_0 = {
  3473.    { nir_search_value_variable },
  3474.    0, /* a */
  3475.    false,
  3476.    nir_type_invalid,
  3477. };
  3478.  
  3479. static const nir_search_variable replace132_1 = {
  3480.    { nir_search_value_variable },
  3481.    1, /* b */
  3482.    false,
  3483.    nir_type_invalid,
  3484. };
  3485. static const nir_search_expression replace132 = {
  3486.    { nir_search_value_expression },
  3487.    nir_op_fsub,
  3488.    { &replace132_0.value, &replace132_1.value },
  3489. };
  3490.  
  3491. static const struct transform nir_opt_algebraic_fadd_xforms[] = {
  3492.    { &search6, &replace6.value, 0 },
  3493.    { &search8, &replace8.value, 0 },
  3494.    { &search10, &replace10.value, 0 },
  3495.    { &search28, &replace28.value, 2 },
  3496.    { &search29, &replace29.value, 2 },
  3497.    { &search31, &replace31.value, 4 },
  3498.    { &search106, &replace106.value, 0 },
  3499.    { &search107, &replace107.value, 0 },
  3500.    { &search132, &replace132.value, 0 },
  3501. };
  3502.    
  3503. static const nir_search_constant search85_0 = {
  3504.    { nir_search_value_constant },
  3505.    { 0x0 /* 0 */ },
  3506. };
  3507.  
  3508. static const nir_search_variable search85_1 = {
  3509.    { nir_search_value_variable },
  3510.    0, /* a */
  3511.    false,
  3512.    nir_type_invalid,
  3513. };
  3514. static const nir_search_expression search85 = {
  3515.    { nir_search_value_expression },
  3516.    nir_op_ishl,
  3517.    { &search85_0.value, &search85_1.value },
  3518. };
  3519.    
  3520. static const nir_search_constant replace85 = {
  3521.    { nir_search_value_constant },
  3522.    { 0x0 /* 0 */ },
  3523. };
  3524.    
  3525. static const nir_search_variable search86_0 = {
  3526.    { nir_search_value_variable },
  3527.    0, /* a */
  3528.    false,
  3529.    nir_type_invalid,
  3530. };
  3531.  
  3532. static const nir_search_constant search86_1 = {
  3533.    { nir_search_value_constant },
  3534.    { 0x0 /* 0 */ },
  3535. };
  3536. static const nir_search_expression search86 = {
  3537.    { nir_search_value_expression },
  3538.    nir_op_ishl,
  3539.    { &search86_0.value, &search86_1.value },
  3540. };
  3541.    
  3542. static const nir_search_variable replace86 = {
  3543.    { nir_search_value_variable },
  3544.    0, /* a */
  3545.    false,
  3546.    nir_type_invalid,
  3547. };
  3548.  
  3549. static const struct transform nir_opt_algebraic_ishl_xforms[] = {
  3550.    { &search85, &replace85.value, 0 },
  3551.    { &search86, &replace86.value, 0 },
  3552. };
  3553.    
  3554. static const nir_search_variable search92_0_0 = {
  3555.    { nir_search_value_variable },
  3556.    0, /* a */
  3557.    false,
  3558.    nir_type_invalid,
  3559. };
  3560. static const nir_search_expression search92_0 = {
  3561.    { nir_search_value_expression },
  3562.    nir_op_fexp2,
  3563.    { &search92_0_0.value },
  3564. };
  3565. static const nir_search_expression search92 = {
  3566.    { nir_search_value_expression },
  3567.    nir_op_flog2,
  3568.    { &search92_0.value },
  3569. };
  3570.    
  3571. static const nir_search_variable replace92 = {
  3572.    { nir_search_value_variable },
  3573.    0, /* a */
  3574.    false,
  3575.    nir_type_invalid,
  3576. };
  3577.    
  3578. static const nir_search_variable search102_0_0 = {
  3579.    { nir_search_value_variable },
  3580.    0, /* a */
  3581.    false,
  3582.    nir_type_invalid,
  3583. };
  3584. static const nir_search_expression search102_0 = {
  3585.    { nir_search_value_expression },
  3586.    nir_op_fsqrt,
  3587.    { &search102_0_0.value },
  3588. };
  3589. static const nir_search_expression search102 = {
  3590.    { nir_search_value_expression },
  3591.    nir_op_flog2,
  3592.    { &search102_0.value },
  3593. };
  3594.    
  3595. static const nir_search_constant replace102_0 = {
  3596.    { nir_search_value_constant },
  3597.    { 0x3f000000 /* 0.5 */ },
  3598. };
  3599.  
  3600. static const nir_search_variable replace102_1_0 = {
  3601.    { nir_search_value_variable },
  3602.    0, /* a */
  3603.    false,
  3604.    nir_type_invalid,
  3605. };
  3606. static const nir_search_expression replace102_1 = {
  3607.    { nir_search_value_expression },
  3608.    nir_op_flog2,
  3609.    { &replace102_1_0.value },
  3610. };
  3611. static const nir_search_expression replace102 = {
  3612.    { nir_search_value_expression },
  3613.    nir_op_fmul,
  3614.    { &replace102_0.value, &replace102_1.value },
  3615. };
  3616.    
  3617. static const nir_search_variable search103_0_0 = {
  3618.    { nir_search_value_variable },
  3619.    0, /* a */
  3620.    false,
  3621.    nir_type_invalid,
  3622. };
  3623. static const nir_search_expression search103_0 = {
  3624.    { nir_search_value_expression },
  3625.    nir_op_frcp,
  3626.    { &search103_0_0.value },
  3627. };
  3628. static const nir_search_expression search103 = {
  3629.    { nir_search_value_expression },
  3630.    nir_op_flog2,
  3631.    { &search103_0.value },
  3632. };
  3633.    
  3634. static const nir_search_variable replace103_0_0 = {
  3635.    { nir_search_value_variable },
  3636.    0, /* a */
  3637.    false,
  3638.    nir_type_invalid,
  3639. };
  3640. static const nir_search_expression replace103_0 = {
  3641.    { nir_search_value_expression },
  3642.    nir_op_flog2,
  3643.    { &replace103_0_0.value },
  3644. };
  3645. static const nir_search_expression replace103 = {
  3646.    { nir_search_value_expression },
  3647.    nir_op_fneg,
  3648.    { &replace103_0.value },
  3649. };
  3650.    
  3651. static const nir_search_variable search104_0_0 = {
  3652.    { nir_search_value_variable },
  3653.    0, /* a */
  3654.    false,
  3655.    nir_type_invalid,
  3656. };
  3657. static const nir_search_expression search104_0 = {
  3658.    { nir_search_value_expression },
  3659.    nir_op_frsq,
  3660.    { &search104_0_0.value },
  3661. };
  3662. static const nir_search_expression search104 = {
  3663.    { nir_search_value_expression },
  3664.    nir_op_flog2,
  3665.    { &search104_0.value },
  3666. };
  3667.    
  3668. static const nir_search_constant replace104_0 = {
  3669.    { nir_search_value_constant },
  3670.    { 0xbf000000 /* -0.5 */ },
  3671. };
  3672.  
  3673. static const nir_search_variable replace104_1_0 = {
  3674.    { nir_search_value_variable },
  3675.    0, /* a */
  3676.    false,
  3677.    nir_type_invalid,
  3678. };
  3679. static const nir_search_expression replace104_1 = {
  3680.    { nir_search_value_expression },
  3681.    nir_op_flog2,
  3682.    { &replace104_1_0.value },
  3683. };
  3684. static const nir_search_expression replace104 = {
  3685.    { nir_search_value_expression },
  3686.    nir_op_fmul,
  3687.    { &replace104_0.value, &replace104_1.value },
  3688. };
  3689.    
  3690. static const nir_search_variable search105_0_0 = {
  3691.    { nir_search_value_variable },
  3692.    0, /* a */
  3693.    false,
  3694.    nir_type_invalid,
  3695. };
  3696.  
  3697. static const nir_search_variable search105_0_1 = {
  3698.    { nir_search_value_variable },
  3699.    1, /* b */
  3700.    false,
  3701.    nir_type_invalid,
  3702. };
  3703. static const nir_search_expression search105_0 = {
  3704.    { nir_search_value_expression },
  3705.    nir_op_fpow,
  3706.    { &search105_0_0.value, &search105_0_1.value },
  3707. };
  3708. static const nir_search_expression search105 = {
  3709.    { nir_search_value_expression },
  3710.    nir_op_flog2,
  3711.    { &search105_0.value },
  3712. };
  3713.    
  3714. static const nir_search_variable replace105_0 = {
  3715.    { nir_search_value_variable },
  3716.    1, /* b */
  3717.    false,
  3718.    nir_type_invalid,
  3719. };
  3720.  
  3721. static const nir_search_variable replace105_1_0 = {
  3722.    { nir_search_value_variable },
  3723.    0, /* a */
  3724.    false,
  3725.    nir_type_invalid,
  3726. };
  3727. static const nir_search_expression replace105_1 = {
  3728.    { nir_search_value_expression },
  3729.    nir_op_flog2,
  3730.    { &replace105_1_0.value },
  3731. };
  3732. static const nir_search_expression replace105 = {
  3733.    { nir_search_value_expression },
  3734.    nir_op_fmul,
  3735.    { &replace105_0.value, &replace105_1.value },
  3736. };
  3737.  
  3738. static const struct transform nir_opt_algebraic_flog2_xforms[] = {
  3739.    { &search92, &replace92.value, 0 },
  3740.    { &search102, &replace102.value, 0 },
  3741.    { &search103, &replace103.value, 0 },
  3742.    { &search104, &replace104.value, 0 },
  3743.    { &search105, &replace105.value, 0 },
  3744. };
  3745.    
  3746. static const nir_search_variable search32_0_0 = {
  3747.    { nir_search_value_variable },
  3748.    0, /* a */
  3749.    false,
  3750.    nir_type_invalid,
  3751. };
  3752.  
  3753. static const nir_search_variable search32_0_1 = {
  3754.    { nir_search_value_variable },
  3755.    1, /* b */
  3756.    false,
  3757.    nir_type_invalid,
  3758. };
  3759. static const nir_search_expression search32_0 = {
  3760.    { nir_search_value_expression },
  3761.    nir_op_flt,
  3762.    { &search32_0_0.value, &search32_0_1.value },
  3763. };
  3764. static const nir_search_expression search32 = {
  3765.    { nir_search_value_expression },
  3766.    nir_op_inot,
  3767.    { &search32_0.value },
  3768. };
  3769.    
  3770. static const nir_search_variable replace32_0 = {
  3771.    { nir_search_value_variable },
  3772.    0, /* a */
  3773.    false,
  3774.    nir_type_invalid,
  3775. };
  3776.  
  3777. static const nir_search_variable replace32_1 = {
  3778.    { nir_search_value_variable },
  3779.    1, /* b */
  3780.    false,
  3781.    nir_type_invalid,
  3782. };
  3783. static const nir_search_expression replace32 = {
  3784.    { nir_search_value_expression },
  3785.    nir_op_fge,
  3786.    { &replace32_0.value, &replace32_1.value },
  3787. };
  3788.    
  3789. static const nir_search_variable search33_0_0 = {
  3790.    { nir_search_value_variable },
  3791.    0, /* a */
  3792.    false,
  3793.    nir_type_invalid,
  3794. };
  3795.  
  3796. static const nir_search_variable search33_0_1 = {
  3797.    { nir_search_value_variable },
  3798.    1, /* b */
  3799.    false,
  3800.    nir_type_invalid,
  3801. };
  3802. static const nir_search_expression search33_0 = {
  3803.    { nir_search_value_expression },
  3804.    nir_op_fge,
  3805.    { &search33_0_0.value, &search33_0_1.value },
  3806. };
  3807. static const nir_search_expression search33 = {
  3808.    { nir_search_value_expression },
  3809.    nir_op_inot,
  3810.    { &search33_0.value },
  3811. };
  3812.    
  3813. static const nir_search_variable replace33_0 = {
  3814.    { nir_search_value_variable },
  3815.    0, /* a */
  3816.    false,
  3817.    nir_type_invalid,
  3818. };
  3819.  
  3820. static const nir_search_variable replace33_1 = {
  3821.    { nir_search_value_variable },
  3822.    1, /* b */
  3823.    false,
  3824.    nir_type_invalid,
  3825. };
  3826. static const nir_search_expression replace33 = {
  3827.    { nir_search_value_expression },
  3828.    nir_op_flt,
  3829.    { &replace33_0.value, &replace33_1.value },
  3830. };
  3831.    
  3832. static const nir_search_variable search34_0_0 = {
  3833.    { nir_search_value_variable },
  3834.    0, /* a */
  3835.    false,
  3836.    nir_type_invalid,
  3837. };
  3838.  
  3839. static const nir_search_variable search34_0_1 = {
  3840.    { nir_search_value_variable },
  3841.    1, /* b */
  3842.    false,
  3843.    nir_type_invalid,
  3844. };
  3845. static const nir_search_expression search34_0 = {
  3846.    { nir_search_value_expression },
  3847.    nir_op_feq,
  3848.    { &search34_0_0.value, &search34_0_1.value },
  3849. };
  3850. static const nir_search_expression search34 = {
  3851.    { nir_search_value_expression },
  3852.    nir_op_inot,
  3853.    { &search34_0.value },
  3854. };
  3855.    
  3856. static const nir_search_variable replace34_0 = {
  3857.    { nir_search_value_variable },
  3858.    0, /* a */
  3859.    false,
  3860.    nir_type_invalid,
  3861. };
  3862.  
  3863. static const nir_search_variable replace34_1 = {
  3864.    { nir_search_value_variable },
  3865.    1, /* b */
  3866.    false,
  3867.    nir_type_invalid,
  3868. };
  3869. static const nir_search_expression replace34 = {
  3870.    { nir_search_value_expression },
  3871.    nir_op_fne,
  3872.    { &replace34_0.value, &replace34_1.value },
  3873. };
  3874.    
  3875. static const nir_search_variable search35_0_0 = {
  3876.    { nir_search_value_variable },
  3877.    0, /* a */
  3878.    false,
  3879.    nir_type_invalid,
  3880. };
  3881.  
  3882. static const nir_search_variable search35_0_1 = {
  3883.    { nir_search_value_variable },
  3884.    1, /* b */
  3885.    false,
  3886.    nir_type_invalid,
  3887. };
  3888. static const nir_search_expression search35_0 = {
  3889.    { nir_search_value_expression },
  3890.    nir_op_fne,
  3891.    { &search35_0_0.value, &search35_0_1.value },
  3892. };
  3893. static const nir_search_expression search35 = {
  3894.    { nir_search_value_expression },
  3895.    nir_op_inot,
  3896.    { &search35_0.value },
  3897. };
  3898.    
  3899. static const nir_search_variable replace35_0 = {
  3900.    { nir_search_value_variable },
  3901.    0, /* a */
  3902.    false,
  3903.    nir_type_invalid,
  3904. };
  3905.  
  3906. static const nir_search_variable replace35_1 = {
  3907.    { nir_search_value_variable },
  3908.    1, /* b */
  3909.    false,
  3910.    nir_type_invalid,
  3911. };
  3912. static const nir_search_expression replace35 = {
  3913.    { nir_search_value_expression },
  3914.    nir_op_feq,
  3915.    { &replace35_0.value, &replace35_1.value },
  3916. };
  3917.    
  3918. static const nir_search_variable search36_0_0 = {
  3919.    { nir_search_value_variable },
  3920.    0, /* a */
  3921.    false,
  3922.    nir_type_invalid,
  3923. };
  3924.  
  3925. static const nir_search_variable search36_0_1 = {
  3926.    { nir_search_value_variable },
  3927.    1, /* b */
  3928.    false,
  3929.    nir_type_invalid,
  3930. };
  3931. static const nir_search_expression search36_0 = {
  3932.    { nir_search_value_expression },
  3933.    nir_op_ilt,
  3934.    { &search36_0_0.value, &search36_0_1.value },
  3935. };
  3936. static const nir_search_expression search36 = {
  3937.    { nir_search_value_expression },
  3938.    nir_op_inot,
  3939.    { &search36_0.value },
  3940. };
  3941.    
  3942. static const nir_search_variable replace36_0 = {
  3943.    { nir_search_value_variable },
  3944.    0, /* a */
  3945.    false,
  3946.    nir_type_invalid,
  3947. };
  3948.  
  3949. static const nir_search_variable replace36_1 = {
  3950.    { nir_search_value_variable },
  3951.    1, /* b */
  3952.    false,
  3953.    nir_type_invalid,
  3954. };
  3955. static const nir_search_expression replace36 = {
  3956.    { nir_search_value_expression },
  3957.    nir_op_ige,
  3958.    { &replace36_0.value, &replace36_1.value },
  3959. };
  3960.    
  3961. static const nir_search_variable search37_0_0 = {
  3962.    { nir_search_value_variable },
  3963.    0, /* a */
  3964.    false,
  3965.    nir_type_invalid,
  3966. };
  3967.  
  3968. static const nir_search_variable search37_0_1 = {
  3969.    { nir_search_value_variable },
  3970.    1, /* b */
  3971.    false,
  3972.    nir_type_invalid,
  3973. };
  3974. static const nir_search_expression search37_0 = {
  3975.    { nir_search_value_expression },
  3976.    nir_op_ige,
  3977.    { &search37_0_0.value, &search37_0_1.value },
  3978. };
  3979. static const nir_search_expression search37 = {
  3980.    { nir_search_value_expression },
  3981.    nir_op_inot,
  3982.    { &search37_0.value },
  3983. };
  3984.    
  3985. static const nir_search_variable replace37_0 = {
  3986.    { nir_search_value_variable },
  3987.    0, /* a */
  3988.    false,
  3989.    nir_type_invalid,
  3990. };
  3991.  
  3992. static const nir_search_variable replace37_1 = {
  3993.    { nir_search_value_variable },
  3994.    1, /* b */
  3995.    false,
  3996.    nir_type_invalid,
  3997. };
  3998. static const nir_search_expression replace37 = {
  3999.    { nir_search_value_expression },
  4000.    nir_op_ilt,
  4001.    { &replace37_0.value, &replace37_1.value },
  4002. };
  4003.    
  4004. static const nir_search_variable search38_0_0 = {
  4005.    { nir_search_value_variable },
  4006.    0, /* a */
  4007.    false,
  4008.    nir_type_invalid,
  4009. };
  4010.  
  4011. static const nir_search_variable search38_0_1 = {
  4012.    { nir_search_value_variable },
  4013.    1, /* b */
  4014.    false,
  4015.    nir_type_invalid,
  4016. };
  4017. static const nir_search_expression search38_0 = {
  4018.    { nir_search_value_expression },
  4019.    nir_op_ieq,
  4020.    { &search38_0_0.value, &search38_0_1.value },
  4021. };
  4022. static const nir_search_expression search38 = {
  4023.    { nir_search_value_expression },
  4024.    nir_op_inot,
  4025.    { &search38_0.value },
  4026. };
  4027.    
  4028. static const nir_search_variable replace38_0 = {
  4029.    { nir_search_value_variable },
  4030.    0, /* a */
  4031.    false,
  4032.    nir_type_invalid,
  4033. };
  4034.  
  4035. static const nir_search_variable replace38_1 = {
  4036.    { nir_search_value_variable },
  4037.    1, /* b */
  4038.    false,
  4039.    nir_type_invalid,
  4040. };
  4041. static const nir_search_expression replace38 = {
  4042.    { nir_search_value_expression },
  4043.    nir_op_ine,
  4044.    { &replace38_0.value, &replace38_1.value },
  4045. };
  4046.    
  4047. static const nir_search_variable search39_0_0 = {
  4048.    { nir_search_value_variable },
  4049.    0, /* a */
  4050.    false,
  4051.    nir_type_invalid,
  4052. };
  4053.  
  4054. static const nir_search_variable search39_0_1 = {
  4055.    { nir_search_value_variable },
  4056.    1, /* b */
  4057.    false,
  4058.    nir_type_invalid,
  4059. };
  4060. static const nir_search_expression search39_0 = {
  4061.    { nir_search_value_expression },
  4062.    nir_op_ine,
  4063.    { &search39_0_0.value, &search39_0_1.value },
  4064. };
  4065. static const nir_search_expression search39 = {
  4066.    { nir_search_value_expression },
  4067.    nir_op_inot,
  4068.    { &search39_0.value },
  4069. };
  4070.    
  4071. static const nir_search_variable replace39_0 = {
  4072.    { nir_search_value_variable },
  4073.    0, /* a */
  4074.    false,
  4075.    nir_type_invalid,
  4076. };
  4077.  
  4078. static const nir_search_variable replace39_1 = {
  4079.    { nir_search_value_variable },
  4080.    1, /* b */
  4081.    false,
  4082.    nir_type_invalid,
  4083. };
  4084. static const nir_search_expression replace39 = {
  4085.    { nir_search_value_expression },
  4086.    nir_op_ieq,
  4087.    { &replace39_0.value, &replace39_1.value },
  4088. };
  4089.    
  4090. static const nir_search_variable search82_0_0 = {
  4091.    { nir_search_value_variable },
  4092.    0, /* a */
  4093.    false,
  4094.    nir_type_invalid,
  4095. };
  4096. static const nir_search_expression search82_0 = {
  4097.    { nir_search_value_expression },
  4098.    nir_op_inot,
  4099.    { &search82_0_0.value },
  4100. };
  4101. static const nir_search_expression search82 = {
  4102.    { nir_search_value_expression },
  4103.    nir_op_inot,
  4104.    { &search82_0.value },
  4105. };
  4106.    
  4107. static const nir_search_variable replace82 = {
  4108.    { nir_search_value_variable },
  4109.    0, /* a */
  4110.    false,
  4111.    nir_type_invalid,
  4112. };
  4113.  
  4114. static const struct transform nir_opt_algebraic_inot_xforms[] = {
  4115.    { &search32, &replace32.value, 0 },
  4116.    { &search33, &replace33.value, 0 },
  4117.    { &search34, &replace34.value, 0 },
  4118.    { &search35, &replace35.value, 0 },
  4119.    { &search36, &replace36.value, 0 },
  4120.    { &search37, &replace37.value, 0 },
  4121.    { &search38, &replace38.value, 0 },
  4122.    { &search39, &replace39.value, 0 },
  4123.    { &search82, &replace82.value, 0 },
  4124. };
  4125.    
  4126. static const nir_search_variable search62_0 = {
  4127.    { nir_search_value_variable },
  4128.    0, /* a */
  4129.    false,
  4130.    nir_type_invalid,
  4131. };
  4132.  
  4133. static const nir_search_variable search62_1 = {
  4134.    { nir_search_value_variable },
  4135.    1, /* b */
  4136.    false,
  4137.    nir_type_invalid,
  4138. };
  4139. static const nir_search_expression search62 = {
  4140.    { nir_search_value_expression },
  4141.    nir_op_sne,
  4142.    { &search62_0.value, &search62_1.value },
  4143. };
  4144.    
  4145. static const nir_search_variable replace62_0_0 = {
  4146.    { nir_search_value_variable },
  4147.    0, /* a */
  4148.    false,
  4149.    nir_type_invalid,
  4150. };
  4151.  
  4152. static const nir_search_variable replace62_0_1 = {
  4153.    { nir_search_value_variable },
  4154.    1, /* b */
  4155.    false,
  4156.    nir_type_invalid,
  4157. };
  4158. static const nir_search_expression replace62_0 = {
  4159.    { nir_search_value_expression },
  4160.    nir_op_fne,
  4161.    { &replace62_0_0.value, &replace62_0_1.value },
  4162. };
  4163. static const nir_search_expression replace62 = {
  4164.    { nir_search_value_expression },
  4165.    nir_op_b2f,
  4166.    { &replace62_0.value },
  4167. };
  4168.  
  4169. static const struct transform nir_opt_algebraic_sne_xforms[] = {
  4170.    { &search62, &replace62.value, 7 },
  4171. };
  4172.    
  4173. static const nir_search_variable search125_0_0 = {
  4174.    { nir_search_value_variable },
  4175.    0, /* a */
  4176.    false,
  4177.    nir_type_invalid,
  4178. };
  4179. static const nir_search_expression search125_0 = {
  4180.    { nir_search_value_expression },
  4181.    nir_op_ftrunc,
  4182.    { &search125_0_0.value },
  4183. };
  4184. static const nir_search_expression search125 = {
  4185.    { nir_search_value_expression },
  4186.    nir_op_f2u,
  4187.    { &search125_0.value },
  4188. };
  4189.    
  4190. static const nir_search_variable replace125_0 = {
  4191.    { nir_search_value_variable },
  4192.    0, /* a */
  4193.    false,
  4194.    nir_type_invalid,
  4195. };
  4196. static const nir_search_expression replace125 = {
  4197.    { nir_search_value_expression },
  4198.    nir_op_f2u,
  4199.    { &replace125_0.value },
  4200. };
  4201.  
  4202. static const struct transform nir_opt_algebraic_f2u_xforms[] = {
  4203.    { &search125, &replace125.value, 0 },
  4204. };
  4205.    
  4206. static const nir_search_variable search122_0 = {
  4207.    { nir_search_value_variable },
  4208.    0, /* a */
  4209.    false,
  4210.    nir_type_invalid,
  4211. };
  4212.  
  4213. static const nir_search_variable search122_1 = {
  4214.    { nir_search_value_variable },
  4215.    1, /* b */
  4216.    false,
  4217.    nir_type_invalid,
  4218. };
  4219.  
  4220. static const nir_search_variable search122_2 = {
  4221.    { nir_search_value_variable },
  4222.    1, /* b */
  4223.    false,
  4224.    nir_type_invalid,
  4225. };
  4226. static const nir_search_expression search122 = {
  4227.    { nir_search_value_expression },
  4228.    nir_op_fcsel,
  4229.    { &search122_0.value, &search122_1.value, &search122_2.value },
  4230. };
  4231.    
  4232. static const nir_search_variable replace122 = {
  4233.    { nir_search_value_variable },
  4234.    1, /* b */
  4235.    false,
  4236.    nir_type_invalid,
  4237. };
  4238.  
  4239. static const struct transform nir_opt_algebraic_fcsel_xforms[] = {
  4240.    { &search122, &replace122.value, 0 },
  4241. };
  4242.    
  4243. static const nir_search_variable search127_0 = {
  4244.    { nir_search_value_variable },
  4245.    0, /* a */
  4246.    false,
  4247.    nir_type_invalid,
  4248. };
  4249.  
  4250. static const nir_search_constant search127_1_0 = {
  4251.    { nir_search_value_constant },
  4252.    { 0x0 /* 0 */ },
  4253. };
  4254.  
  4255. static const nir_search_variable search127_1_1 = {
  4256.    { nir_search_value_variable },
  4257.    1, /* b */
  4258.    false,
  4259.    nir_type_invalid,
  4260. };
  4261. static const nir_search_expression search127_1 = {
  4262.    { nir_search_value_expression },
  4263.    nir_op_isub,
  4264.    { &search127_1_0.value, &search127_1_1.value },
  4265. };
  4266. static const nir_search_expression search127 = {
  4267.    { nir_search_value_expression },
  4268.    nir_op_isub,
  4269.    { &search127_0.value, &search127_1.value },
  4270. };
  4271.    
  4272. static const nir_search_variable replace127_0 = {
  4273.    { nir_search_value_variable },
  4274.    0, /* a */
  4275.    false,
  4276.    nir_type_invalid,
  4277. };
  4278.  
  4279. static const nir_search_variable replace127_1 = {
  4280.    { nir_search_value_variable },
  4281.    1, /* b */
  4282.    false,
  4283.    nir_type_invalid,
  4284. };
  4285. static const nir_search_expression replace127 = {
  4286.    { nir_search_value_expression },
  4287.    nir_op_iadd,
  4288.    { &replace127_0.value, &replace127_1.value },
  4289. };
  4290.    
  4291. static const nir_search_variable search129_0 = {
  4292.    { nir_search_value_variable },
  4293.    0, /* a */
  4294.    false,
  4295.    nir_type_invalid,
  4296. };
  4297.  
  4298. static const nir_search_variable search129_1 = {
  4299.    { nir_search_value_variable },
  4300.    1, /* b */
  4301.    false,
  4302.    nir_type_invalid,
  4303. };
  4304. static const nir_search_expression search129 = {
  4305.    { nir_search_value_expression },
  4306.    nir_op_isub,
  4307.    { &search129_0.value, &search129_1.value },
  4308. };
  4309.    
  4310. static const nir_search_variable replace129_0 = {
  4311.    { nir_search_value_variable },
  4312.    0, /* a */
  4313.    false,
  4314.    nir_type_invalid,
  4315. };
  4316.  
  4317. static const nir_search_variable replace129_1_0 = {
  4318.    { nir_search_value_variable },
  4319.    1, /* b */
  4320.    false,
  4321.    nir_type_invalid,
  4322. };
  4323. static const nir_search_expression replace129_1 = {
  4324.    { nir_search_value_expression },
  4325.    nir_op_ineg,
  4326.    { &replace129_1_0.value },
  4327. };
  4328. static const nir_search_expression replace129 = {
  4329.    { nir_search_value_expression },
  4330.    nir_op_iadd,
  4331.    { &replace129_0.value, &replace129_1.value },
  4332. };
  4333.  
  4334. static const struct transform nir_opt_algebraic_isub_xforms[] = {
  4335.    { &search127, &replace127.value, 0 },
  4336.    { &search129, &replace129.value, 12 },
  4337. };
  4338.    
  4339. static const nir_search_variable search46_0 = {
  4340.    { nir_search_value_variable },
  4341.    0, /* a */
  4342.    false,
  4343.    nir_type_invalid,
  4344. };
  4345.  
  4346. static const nir_search_variable search46_1 = {
  4347.    { nir_search_value_variable },
  4348.    0, /* a */
  4349.    false,
  4350.    nir_type_invalid,
  4351. };
  4352. static const nir_search_expression search46 = {
  4353.    { nir_search_value_expression },
  4354.    nir_op_fmax,
  4355.    { &search46_0.value, &search46_1.value },
  4356. };
  4357.    
  4358. static const nir_search_variable replace46 = {
  4359.    { nir_search_value_variable },
  4360.    0, /* a */
  4361.    false,
  4362.    nir_type_invalid,
  4363. };
  4364.  
  4365. static const struct transform nir_opt_algebraic_fmax_xforms[] = {
  4366.    { &search46, &replace46.value, 0 },
  4367. };
  4368.    
  4369. static const nir_search_variable search140_0_0 = {
  4370.    { nir_search_value_variable },
  4371.    0, /* a */
  4372.    false,
  4373.    nir_type_invalid,
  4374. };
  4375.  
  4376. static const nir_search_variable search140_0_1 = {
  4377.    { nir_search_value_variable },
  4378.    1, /* b */
  4379.    true,
  4380.    nir_type_invalid,
  4381. };
  4382.  
  4383. static const nir_search_variable search140_0_2 = {
  4384.    { nir_search_value_variable },
  4385.    2, /* c */
  4386.    true,
  4387.    nir_type_invalid,
  4388. };
  4389. static const nir_search_expression search140_0 = {
  4390.    { nir_search_value_expression },
  4391.    nir_op_bcsel,
  4392.    { &search140_0_0.value, &search140_0_1.value, &search140_0_2.value },
  4393. };
  4394.  
  4395. static const nir_search_variable search140_1 = {
  4396.    { nir_search_value_variable },
  4397.    3, /* d */
  4398.    true,
  4399.    nir_type_invalid,
  4400. };
  4401. static const nir_search_expression search140 = {
  4402.    { nir_search_value_expression },
  4403.    nir_op_feq,
  4404.    { &search140_0.value, &search140_1.value },
  4405. };
  4406.    
  4407. static const nir_search_variable replace140_0 = {
  4408.    { nir_search_value_variable },
  4409.    0, /* a */
  4410.    false,
  4411.    nir_type_invalid,
  4412. };
  4413.  
  4414. static const nir_search_variable replace140_1_0 = {
  4415.    { nir_search_value_variable },
  4416.    1, /* b */
  4417.    false,
  4418.    nir_type_invalid,
  4419. };
  4420.  
  4421. static const nir_search_variable replace140_1_1 = {
  4422.    { nir_search_value_variable },
  4423.    3, /* d */
  4424.    false,
  4425.    nir_type_invalid,
  4426. };
  4427. static const nir_search_expression replace140_1 = {
  4428.    { nir_search_value_expression },
  4429.    nir_op_feq,
  4430.    { &replace140_1_0.value, &replace140_1_1.value },
  4431. };
  4432.  
  4433. static const nir_search_variable replace140_2_0 = {
  4434.    { nir_search_value_variable },
  4435.    2, /* c */
  4436.    false,
  4437.    nir_type_invalid,
  4438. };
  4439.  
  4440. static const nir_search_variable replace140_2_1 = {
  4441.    { nir_search_value_variable },
  4442.    3, /* d */
  4443.    false,
  4444.    nir_type_invalid,
  4445. };
  4446. static const nir_search_expression replace140_2 = {
  4447.    { nir_search_value_expression },
  4448.    nir_op_feq,
  4449.    { &replace140_2_0.value, &replace140_2_1.value },
  4450. };
  4451. static const nir_search_expression replace140 = {
  4452.    { nir_search_value_expression },
  4453.    nir_op_bcsel,
  4454.    { &replace140_0.value, &replace140_1.value, &replace140_2.value },
  4455. };
  4456.    
  4457. static const nir_search_variable search141_0 = {
  4458.    { nir_search_value_variable },
  4459.    0, /* d */
  4460.    true,
  4461.    nir_type_invalid,
  4462. };
  4463.  
  4464. static const nir_search_variable search141_1_0 = {
  4465.    { nir_search_value_variable },
  4466.    1, /* a */
  4467.    false,
  4468.    nir_type_invalid,
  4469. };
  4470.  
  4471. static const nir_search_variable search141_1_1 = {
  4472.    { nir_search_value_variable },
  4473.    2, /* b */
  4474.    true,
  4475.    nir_type_invalid,
  4476. };
  4477.  
  4478. static const nir_search_variable search141_1_2 = {
  4479.    { nir_search_value_variable },
  4480.    3, /* c */
  4481.    true,
  4482.    nir_type_invalid,
  4483. };
  4484. static const nir_search_expression search141_1 = {
  4485.    { nir_search_value_expression },
  4486.    nir_op_bcsel,
  4487.    { &search141_1_0.value, &search141_1_1.value, &search141_1_2.value },
  4488. };
  4489. static const nir_search_expression search141 = {
  4490.    { nir_search_value_expression },
  4491.    nir_op_feq,
  4492.    { &search141_0.value, &search141_1.value },
  4493. };
  4494.    
  4495. static const nir_search_variable replace141_0 = {
  4496.    { nir_search_value_variable },
  4497.    1, /* a */
  4498.    false,
  4499.    nir_type_invalid,
  4500. };
  4501.  
  4502. static const nir_search_variable replace141_1_0 = {
  4503.    { nir_search_value_variable },
  4504.    0, /* d */
  4505.    false,
  4506.    nir_type_invalid,
  4507. };
  4508.  
  4509. static const nir_search_variable replace141_1_1 = {
  4510.    { nir_search_value_variable },
  4511.    2, /* b */
  4512.    false,
  4513.    nir_type_invalid,
  4514. };
  4515. static const nir_search_expression replace141_1 = {
  4516.    { nir_search_value_expression },
  4517.    nir_op_feq,
  4518.    { &replace141_1_0.value, &replace141_1_1.value },
  4519. };
  4520.  
  4521. static const nir_search_variable replace141_2_0 = {
  4522.    { nir_search_value_variable },
  4523.    0, /* d */
  4524.    false,
  4525.    nir_type_invalid,
  4526. };
  4527.  
  4528. static const nir_search_variable replace141_2_1 = {
  4529.    { nir_search_value_variable },
  4530.    3, /* c */
  4531.    false,
  4532.    nir_type_invalid,
  4533. };
  4534. static const nir_search_expression replace141_2 = {
  4535.    { nir_search_value_expression },
  4536.    nir_op_feq,
  4537.    { &replace141_2_0.value, &replace141_2_1.value },
  4538. };
  4539. static const nir_search_expression replace141 = {
  4540.    { nir_search_value_expression },
  4541.    nir_op_bcsel,
  4542.    { &replace141_0.value, &replace141_1.value, &replace141_2.value },
  4543. };
  4544.  
  4545. static const struct transform nir_opt_algebraic_feq_xforms[] = {
  4546.    { &search140, &replace140.value, 0 },
  4547.    { &search141, &replace141.value, 0 },
  4548. };
  4549.    
  4550. static const nir_search_variable search23_0 = {
  4551.    { nir_search_value_variable },
  4552.    0, /* a */
  4553.    false,
  4554.    nir_type_invalid,
  4555. };
  4556.  
  4557. static const nir_search_variable search23_1 = {
  4558.    { nir_search_value_variable },
  4559.    1, /* b */
  4560.    false,
  4561.    nir_type_invalid,
  4562. };
  4563.  
  4564. static const nir_search_constant search23_2 = {
  4565.    { nir_search_value_constant },
  4566.    { 0x0 /* 0.0 */ },
  4567. };
  4568. static const nir_search_expression search23 = {
  4569.    { nir_search_value_expression },
  4570.    nir_op_flrp,
  4571.    { &search23_0.value, &search23_1.value, &search23_2.value },
  4572. };
  4573.    
  4574. static const nir_search_variable replace23 = {
  4575.    { nir_search_value_variable },
  4576.    0, /* a */
  4577.    false,
  4578.    nir_type_invalid,
  4579. };
  4580.    
  4581. static const nir_search_variable search24_0 = {
  4582.    { nir_search_value_variable },
  4583.    0, /* a */
  4584.    false,
  4585.    nir_type_invalid,
  4586. };
  4587.  
  4588. static const nir_search_variable search24_1 = {
  4589.    { nir_search_value_variable },
  4590.    1, /* b */
  4591.    false,
  4592.    nir_type_invalid,
  4593. };
  4594.  
  4595. static const nir_search_constant search24_2 = {
  4596.    { nir_search_value_constant },
  4597.    { 0x3f800000 /* 1.0 */ },
  4598. };
  4599. static const nir_search_expression search24 = {
  4600.    { nir_search_value_expression },
  4601.    nir_op_flrp,
  4602.    { &search24_0.value, &search24_1.value, &search24_2.value },
  4603. };
  4604.    
  4605. static const nir_search_variable replace24 = {
  4606.    { nir_search_value_variable },
  4607.    1, /* b */
  4608.    false,
  4609.    nir_type_invalid,
  4610. };
  4611.    
  4612. static const nir_search_variable search25_0 = {
  4613.    { nir_search_value_variable },
  4614.    0, /* a */
  4615.    false,
  4616.    nir_type_invalid,
  4617. };
  4618.  
  4619. static const nir_search_variable search25_1 = {
  4620.    { nir_search_value_variable },
  4621.    0, /* a */
  4622.    false,
  4623.    nir_type_invalid,
  4624. };
  4625.  
  4626. static const nir_search_variable search25_2 = {
  4627.    { nir_search_value_variable },
  4628.    1, /* b */
  4629.    false,
  4630.    nir_type_invalid,
  4631. };
  4632. static const nir_search_expression search25 = {
  4633.    { nir_search_value_expression },
  4634.    nir_op_flrp,
  4635.    { &search25_0.value, &search25_1.value, &search25_2.value },
  4636. };
  4637.    
  4638. static const nir_search_variable replace25 = {
  4639.    { nir_search_value_variable },
  4640.    0, /* a */
  4641.    false,
  4642.    nir_type_invalid,
  4643. };
  4644.    
  4645. static const nir_search_constant search26_0 = {
  4646.    { nir_search_value_constant },
  4647.    { 0x0 /* 0.0 */ },
  4648. };
  4649.  
  4650. static const nir_search_variable search26_1 = {
  4651.    { nir_search_value_variable },
  4652.    0, /* a */
  4653.    false,
  4654.    nir_type_invalid,
  4655. };
  4656.  
  4657. static const nir_search_variable search26_2 = {
  4658.    { nir_search_value_variable },
  4659.    1, /* b */
  4660.    false,
  4661.    nir_type_invalid,
  4662. };
  4663. static const nir_search_expression search26 = {
  4664.    { nir_search_value_expression },
  4665.    nir_op_flrp,
  4666.    { &search26_0.value, &search26_1.value, &search26_2.value },
  4667. };
  4668.    
  4669. static const nir_search_variable replace26_0 = {
  4670.    { nir_search_value_variable },
  4671.    0, /* a */
  4672.    false,
  4673.    nir_type_invalid,
  4674. };
  4675.  
  4676. static const nir_search_variable replace26_1 = {
  4677.    { nir_search_value_variable },
  4678.    1, /* b */
  4679.    false,
  4680.    nir_type_invalid,
  4681. };
  4682. static const nir_search_expression replace26 = {
  4683.    { nir_search_value_expression },
  4684.    nir_op_fmul,
  4685.    { &replace26_0.value, &replace26_1.value },
  4686. };
  4687.    
  4688. static const nir_search_variable search27_0 = {
  4689.    { nir_search_value_variable },
  4690.    0, /* a */
  4691.    false,
  4692.    nir_type_invalid,
  4693. };
  4694.  
  4695. static const nir_search_variable search27_1 = {
  4696.    { nir_search_value_variable },
  4697.    1, /* b */
  4698.    false,
  4699.    nir_type_invalid,
  4700. };
  4701.  
  4702. static const nir_search_variable search27_2 = {
  4703.    { nir_search_value_variable },
  4704.    2, /* c */
  4705.    false,
  4706.    nir_type_invalid,
  4707. };
  4708. static const nir_search_expression search27 = {
  4709.    { nir_search_value_expression },
  4710.    nir_op_flrp,
  4711.    { &search27_0.value, &search27_1.value, &search27_2.value },
  4712. };
  4713.    
  4714. static const nir_search_variable replace27_0_0 = {
  4715.    { nir_search_value_variable },
  4716.    2, /* c */
  4717.    false,
  4718.    nir_type_invalid,
  4719. };
  4720.  
  4721. static const nir_search_variable replace27_0_1_0 = {
  4722.    { nir_search_value_variable },
  4723.    1, /* b */
  4724.    false,
  4725.    nir_type_invalid,
  4726. };
  4727.  
  4728. static const nir_search_variable replace27_0_1_1 = {
  4729.    { nir_search_value_variable },
  4730.    0, /* a */
  4731.    false,
  4732.    nir_type_invalid,
  4733. };
  4734. static const nir_search_expression replace27_0_1 = {
  4735.    { nir_search_value_expression },
  4736.    nir_op_fsub,
  4737.    { &replace27_0_1_0.value, &replace27_0_1_1.value },
  4738. };
  4739. static const nir_search_expression replace27_0 = {
  4740.    { nir_search_value_expression },
  4741.    nir_op_fmul,
  4742.    { &replace27_0_0.value, &replace27_0_1.value },
  4743. };
  4744.  
  4745. static const nir_search_variable replace27_1 = {
  4746.    { nir_search_value_variable },
  4747.    0, /* a */
  4748.    false,
  4749.    nir_type_invalid,
  4750. };
  4751. static const nir_search_expression replace27 = {
  4752.    { nir_search_value_expression },
  4753.    nir_op_fadd,
  4754.    { &replace27_0.value, &replace27_1.value },
  4755. };
  4756.  
  4757. static const struct transform nir_opt_algebraic_flrp_xforms[] = {
  4758.    { &search23, &replace23.value, 0 },
  4759.    { &search24, &replace24.value, 0 },
  4760.    { &search25, &replace25.value, 0 },
  4761.    { &search26, &replace26.value, 0 },
  4762.    { &search27, &replace27.value, 1 },
  4763. };
  4764.    
  4765. static const nir_search_variable search55_0_0 = {
  4766.    { nir_search_value_variable },
  4767.    0, /* a */
  4768.    false,
  4769.    nir_type_invalid,
  4770. };
  4771.  
  4772. static const nir_search_variable search55_0_1 = {
  4773.    { nir_search_value_variable },
  4774.    1, /* b */
  4775.    false,
  4776.    nir_type_invalid,
  4777. };
  4778. static const nir_search_expression search55_0 = {
  4779.    { nir_search_value_expression },
  4780.    nir_op_flt,
  4781.    { &search55_0_0.value, &search55_0_1.value },
  4782. };
  4783.  
  4784. static const nir_search_variable search55_1_0 = {
  4785.    { nir_search_value_variable },
  4786.    0, /* a */
  4787.    false,
  4788.    nir_type_invalid,
  4789. };
  4790.  
  4791. static const nir_search_variable search55_1_1 = {
  4792.    { nir_search_value_variable },
  4793.    2, /* c */
  4794.    false,
  4795.    nir_type_invalid,
  4796. };
  4797. static const nir_search_expression search55_1 = {
  4798.    { nir_search_value_expression },
  4799.    nir_op_flt,
  4800.    { &search55_1_0.value, &search55_1_1.value },
  4801. };
  4802. static const nir_search_expression search55 = {
  4803.    { nir_search_value_expression },
  4804.    nir_op_ior,
  4805.    { &search55_0.value, &search55_1.value },
  4806. };
  4807.    
  4808. static const nir_search_variable replace55_0 = {
  4809.    { nir_search_value_variable },
  4810.    0, /* a */
  4811.    false,
  4812.    nir_type_invalid,
  4813. };
  4814.  
  4815. static const nir_search_variable replace55_1_0 = {
  4816.    { nir_search_value_variable },
  4817.    1, /* b */
  4818.    false,
  4819.    nir_type_invalid,
  4820. };
  4821.  
  4822. static const nir_search_variable replace55_1_1 = {
  4823.    { nir_search_value_variable },
  4824.    2, /* c */
  4825.    false,
  4826.    nir_type_invalid,
  4827. };
  4828. static const nir_search_expression replace55_1 = {
  4829.    { nir_search_value_expression },
  4830.    nir_op_fmax,
  4831.    { &replace55_1_0.value, &replace55_1_1.value },
  4832. };
  4833. static const nir_search_expression replace55 = {
  4834.    { nir_search_value_expression },
  4835.    nir_op_flt,
  4836.    { &replace55_0.value, &replace55_1.value },
  4837. };
  4838.    
  4839. static const nir_search_variable search56_0_0 = {
  4840.    { nir_search_value_variable },
  4841.    0, /* a */
  4842.    false,
  4843.    nir_type_invalid,
  4844. };
  4845.  
  4846. static const nir_search_variable search56_0_1 = {
  4847.    { nir_search_value_variable },
  4848.    1, /* c */
  4849.    false,
  4850.    nir_type_invalid,
  4851. };
  4852. static const nir_search_expression search56_0 = {
  4853.    { nir_search_value_expression },
  4854.    nir_op_flt,
  4855.    { &search56_0_0.value, &search56_0_1.value },
  4856. };
  4857.  
  4858. static const nir_search_variable search56_1_0 = {
  4859.    { nir_search_value_variable },
  4860.    2, /* b */
  4861.    false,
  4862.    nir_type_invalid,
  4863. };
  4864.  
  4865. static const nir_search_variable search56_1_1 = {
  4866.    { nir_search_value_variable },
  4867.    1, /* c */
  4868.    false,
  4869.    nir_type_invalid,
  4870. };
  4871. static const nir_search_expression search56_1 = {
  4872.    { nir_search_value_expression },
  4873.    nir_op_flt,
  4874.    { &search56_1_0.value, &search56_1_1.value },
  4875. };
  4876. static const nir_search_expression search56 = {
  4877.    { nir_search_value_expression },
  4878.    nir_op_ior,
  4879.    { &search56_0.value, &search56_1.value },
  4880. };
  4881.    
  4882. static const nir_search_variable replace56_0_0 = {
  4883.    { nir_search_value_variable },
  4884.    0, /* a */
  4885.    false,
  4886.    nir_type_invalid,
  4887. };
  4888.  
  4889. static const nir_search_variable replace56_0_1 = {
  4890.    { nir_search_value_variable },
  4891.    2, /* b */
  4892.    false,
  4893.    nir_type_invalid,
  4894. };
  4895. static const nir_search_expression replace56_0 = {
  4896.    { nir_search_value_expression },
  4897.    nir_op_fmin,
  4898.    { &replace56_0_0.value, &replace56_0_1.value },
  4899. };
  4900.  
  4901. static const nir_search_variable replace56_1 = {
  4902.    { nir_search_value_variable },
  4903.    1, /* c */
  4904.    false,
  4905.    nir_type_invalid,
  4906. };
  4907. static const nir_search_expression replace56 = {
  4908.    { nir_search_value_expression },
  4909.    nir_op_flt,
  4910.    { &replace56_0.value, &replace56_1.value },
  4911. };
  4912.    
  4913. static const nir_search_variable search57_0_0 = {
  4914.    { nir_search_value_variable },
  4915.    0, /* a */
  4916.    false,
  4917.    nir_type_invalid,
  4918. };
  4919.  
  4920. static const nir_search_variable search57_0_1 = {
  4921.    { nir_search_value_variable },
  4922.    1, /* b */
  4923.    false,
  4924.    nir_type_invalid,
  4925. };
  4926. static const nir_search_expression search57_0 = {
  4927.    { nir_search_value_expression },
  4928.    nir_op_fge,
  4929.    { &search57_0_0.value, &search57_0_1.value },
  4930. };
  4931.  
  4932. static const nir_search_variable search57_1_0 = {
  4933.    { nir_search_value_variable },
  4934.    0, /* a */
  4935.    false,
  4936.    nir_type_invalid,
  4937. };
  4938.  
  4939. static const nir_search_variable search57_1_1 = {
  4940.    { nir_search_value_variable },
  4941.    2, /* c */
  4942.    false,
  4943.    nir_type_invalid,
  4944. };
  4945. static const nir_search_expression search57_1 = {
  4946.    { nir_search_value_expression },
  4947.    nir_op_fge,
  4948.    { &search57_1_0.value, &search57_1_1.value },
  4949. };
  4950. static const nir_search_expression search57 = {
  4951.    { nir_search_value_expression },
  4952.    nir_op_ior,
  4953.    { &search57_0.value, &search57_1.value },
  4954. };
  4955.    
  4956. static const nir_search_variable replace57_0 = {
  4957.    { nir_search_value_variable },
  4958.    0, /* a */
  4959.    false,
  4960.    nir_type_invalid,
  4961. };
  4962.  
  4963. static const nir_search_variable replace57_1_0 = {
  4964.    { nir_search_value_variable },
  4965.    1, /* b */
  4966.    false,
  4967.    nir_type_invalid,
  4968. };
  4969.  
  4970. static const nir_search_variable replace57_1_1 = {
  4971.    { nir_search_value_variable },
  4972.    2, /* c */
  4973.    false,
  4974.    nir_type_invalid,
  4975. };
  4976. static const nir_search_expression replace57_1 = {
  4977.    { nir_search_value_expression },
  4978.    nir_op_fmin,
  4979.    { &replace57_1_0.value, &replace57_1_1.value },
  4980. };
  4981. static const nir_search_expression replace57 = {
  4982.    { nir_search_value_expression },
  4983.    nir_op_fge,
  4984.    { &replace57_0.value, &replace57_1.value },
  4985. };
  4986.    
  4987. static const nir_search_variable search58_0_0 = {
  4988.    { nir_search_value_variable },
  4989.    0, /* a */
  4990.    false,
  4991.    nir_type_invalid,
  4992. };
  4993.  
  4994. static const nir_search_variable search58_0_1 = {
  4995.    { nir_search_value_variable },
  4996.    1, /* c */
  4997.    false,
  4998.    nir_type_invalid,
  4999. };
  5000. static const nir_search_expression search58_0 = {
  5001.    { nir_search_value_expression },
  5002.    nir_op_fge,
  5003.    { &search58_0_0.value, &search58_0_1.value },
  5004. };
  5005.  
  5006. static const nir_search_variable search58_1_0 = {
  5007.    { nir_search_value_variable },
  5008.    2, /* b */
  5009.    false,
  5010.    nir_type_invalid,
  5011. };
  5012.  
  5013. static const nir_search_variable search58_1_1 = {
  5014.    { nir_search_value_variable },
  5015.    1, /* c */
  5016.    false,
  5017.    nir_type_invalid,
  5018. };
  5019. static const nir_search_expression search58_1 = {
  5020.    { nir_search_value_expression },
  5021.    nir_op_fge,
  5022.    { &search58_1_0.value, &search58_1_1.value },
  5023. };
  5024. static const nir_search_expression search58 = {
  5025.    { nir_search_value_expression },
  5026.    nir_op_ior,
  5027.    { &search58_0.value, &search58_1.value },
  5028. };
  5029.    
  5030. static const nir_search_variable replace58_0_0 = {
  5031.    { nir_search_value_variable },
  5032.    0, /* a */
  5033.    false,
  5034.    nir_type_invalid,
  5035. };
  5036.  
  5037. static const nir_search_variable replace58_0_1 = {
  5038.    { nir_search_value_variable },
  5039.    2, /* b */
  5040.    false,
  5041.    nir_type_invalid,
  5042. };
  5043. static const nir_search_expression replace58_0 = {
  5044.    { nir_search_value_expression },
  5045.    nir_op_fmax,
  5046.    { &replace58_0_0.value, &replace58_0_1.value },
  5047. };
  5048.  
  5049. static const nir_search_variable replace58_1 = {
  5050.    { nir_search_value_variable },
  5051.    1, /* c */
  5052.    false,
  5053.    nir_type_invalid,
  5054. };
  5055. static const nir_search_expression replace58 = {
  5056.    { nir_search_value_expression },
  5057.    nir_op_fge,
  5058.    { &replace58_0.value, &replace58_1.value },
  5059. };
  5060.    
  5061. static const nir_search_variable search78_0 = {
  5062.    { nir_search_value_variable },
  5063.    0, /* a */
  5064.    false,
  5065.    nir_type_invalid,
  5066. };
  5067.  
  5068. static const nir_search_variable search78_1 = {
  5069.    { nir_search_value_variable },
  5070.    0, /* a */
  5071.    false,
  5072.    nir_type_invalid,
  5073. };
  5074. static const nir_search_expression search78 = {
  5075.    { nir_search_value_expression },
  5076.    nir_op_ior,
  5077.    { &search78_0.value, &search78_1.value },
  5078. };
  5079.    
  5080. static const nir_search_variable replace78 = {
  5081.    { nir_search_value_variable },
  5082.    0, /* a */
  5083.    false,
  5084.    nir_type_invalid,
  5085. };
  5086.    
  5087. static const nir_search_variable search79_0 = {
  5088.    { nir_search_value_variable },
  5089.    0, /* a */
  5090.    false,
  5091.    nir_type_invalid,
  5092. };
  5093.  
  5094. static const nir_search_constant search79_1 = {
  5095.    { nir_search_value_constant },
  5096.    { 0x0 /* 0 */ },
  5097. };
  5098. static const nir_search_expression search79 = {
  5099.    { nir_search_value_expression },
  5100.    nir_op_ior,
  5101.    { &search79_0.value, &search79_1.value },
  5102. };
  5103.    
  5104. static const nir_search_variable replace79 = {
  5105.    { nir_search_value_variable },
  5106.    0, /* a */
  5107.    false,
  5108.    nir_type_invalid,
  5109. };
  5110.    
  5111. static const nir_search_variable search84_0_0 = {
  5112.    { nir_search_value_variable },
  5113.    0, /* a */
  5114.    false,
  5115.    nir_type_invalid,
  5116. };
  5117. static const nir_search_expression search84_0 = {
  5118.    { nir_search_value_expression },
  5119.    nir_op_inot,
  5120.    { &search84_0_0.value },
  5121. };
  5122.  
  5123. static const nir_search_variable search84_1_0 = {
  5124.    { nir_search_value_variable },
  5125.    1, /* b */
  5126.    false,
  5127.    nir_type_invalid,
  5128. };
  5129. static const nir_search_expression search84_1 = {
  5130.    { nir_search_value_expression },
  5131.    nir_op_inot,
  5132.    { &search84_1_0.value },
  5133. };
  5134. static const nir_search_expression search84 = {
  5135.    { nir_search_value_expression },
  5136.    nir_op_ior,
  5137.    { &search84_0.value, &search84_1.value },
  5138. };
  5139.    
  5140. static const nir_search_variable replace84_0_0 = {
  5141.    { nir_search_value_variable },
  5142.    0, /* a */
  5143.    false,
  5144.    nir_type_invalid,
  5145. };
  5146.  
  5147. static const nir_search_variable replace84_0_1 = {
  5148.    { nir_search_value_variable },
  5149.    1, /* b */
  5150.    false,
  5151.    nir_type_invalid,
  5152. };
  5153. static const nir_search_expression replace84_0 = {
  5154.    { nir_search_value_expression },
  5155.    nir_op_iand,
  5156.    { &replace84_0_0.value, &replace84_0_1.value },
  5157. };
  5158. static const nir_search_expression replace84 = {
  5159.    { nir_search_value_expression },
  5160.    nir_op_inot,
  5161.    { &replace84_0.value },
  5162. };
  5163.  
  5164. static const struct transform nir_opt_algebraic_ior_xforms[] = {
  5165.    { &search55, &replace55.value, 0 },
  5166.    { &search56, &replace56.value, 0 },
  5167.    { &search57, &replace57.value, 0 },
  5168.    { &search58, &replace58.value, 0 },
  5169.    { &search78, &replace78.value, 0 },
  5170.    { &search79, &replace79.value, 0 },
  5171.    { &search84, &replace84.value, 0 },
  5172. };
  5173.    
  5174. static const nir_search_variable search48_0 = {
  5175.    { nir_search_value_variable },
  5176.    0, /* a */
  5177.    false,
  5178.    nir_type_invalid,
  5179. };
  5180.  
  5181. static const nir_search_variable search48_1 = {
  5182.    { nir_search_value_variable },
  5183.    0, /* a */
  5184.    false,
  5185.    nir_type_invalid,
  5186. };
  5187. static const nir_search_expression search48 = {
  5188.    { nir_search_value_expression },
  5189.    nir_op_imax,
  5190.    { &search48_0.value, &search48_1.value },
  5191. };
  5192.    
  5193. static const nir_search_variable replace48 = {
  5194.    { nir_search_value_variable },
  5195.    0, /* a */
  5196.    false,
  5197.    nir_type_invalid,
  5198. };
  5199.  
  5200. static const struct transform nir_opt_algebraic_imax_xforms[] = {
  5201.    { &search48, &replace48.value, 0 },
  5202. };
  5203.    
  5204. static const nir_search_variable search52_0 = {
  5205.    { nir_search_value_variable },
  5206.    0, /* a */
  5207.    false,
  5208.    nir_type_invalid,
  5209. };
  5210. static const nir_search_expression search52 = {
  5211.    { nir_search_value_expression },
  5212.    nir_op_fsat,
  5213.    { &search52_0.value },
  5214. };
  5215.    
  5216. static const nir_search_variable replace52_0_0 = {
  5217.    { nir_search_value_variable },
  5218.    0, /* a */
  5219.    false,
  5220.    nir_type_invalid,
  5221. };
  5222.  
  5223. static const nir_search_constant replace52_0_1 = {
  5224.    { nir_search_value_constant },
  5225.    { 0x0 /* 0.0 */ },
  5226. };
  5227. static const nir_search_expression replace52_0 = {
  5228.    { nir_search_value_expression },
  5229.    nir_op_fmax,
  5230.    { &replace52_0_0.value, &replace52_0_1.value },
  5231. };
  5232.  
  5233. static const nir_search_constant replace52_1 = {
  5234.    { nir_search_value_constant },
  5235.    { 0x3f800000 /* 1.0 */ },
  5236. };
  5237. static const nir_search_expression replace52 = {
  5238.    { nir_search_value_expression },
  5239.    nir_op_fmin,
  5240.    { &replace52_0.value, &replace52_1.value },
  5241. };
  5242.    
  5243. static const nir_search_variable search53_0_0 = {
  5244.    { nir_search_value_variable },
  5245.    0, /* a */
  5246.    false,
  5247.    nir_type_invalid,
  5248. };
  5249. static const nir_search_expression search53_0 = {
  5250.    { nir_search_value_expression },
  5251.    nir_op_fsat,
  5252.    { &search53_0_0.value },
  5253. };
  5254. static const nir_search_expression search53 = {
  5255.    { nir_search_value_expression },
  5256.    nir_op_fsat,
  5257.    { &search53_0.value },
  5258. };
  5259.    
  5260. static const nir_search_variable replace53_0 = {
  5261.    { nir_search_value_variable },
  5262.    0, /* a */
  5263.    false,
  5264.    nir_type_invalid,
  5265. };
  5266. static const nir_search_expression replace53 = {
  5267.    { nir_search_value_expression },
  5268.    nir_op_fsat,
  5269.    { &replace53_0.value },
  5270. };
  5271.    
  5272. static const nir_search_variable search65_0_0_0 = {
  5273.    { nir_search_value_variable },
  5274.    0, /* a */
  5275.    false,
  5276.    nir_type_invalid,
  5277. };
  5278. static const nir_search_expression search65_0_0 = {
  5279.    { nir_search_value_expression },
  5280.    nir_op_b2f,
  5281.    { &search65_0_0_0.value },
  5282. };
  5283.  
  5284. static const nir_search_variable search65_0_1_0 = {
  5285.    { nir_search_value_variable },
  5286.    1, /* b */
  5287.    false,
  5288.    nir_type_invalid,
  5289. };
  5290. static const nir_search_expression search65_0_1 = {
  5291.    { nir_search_value_expression },
  5292.    nir_op_b2f,
  5293.    { &search65_0_1_0.value },
  5294. };
  5295. static const nir_search_expression search65_0 = {
  5296.    { nir_search_value_expression },
  5297.    nir_op_fadd,
  5298.    { &search65_0_0.value, &search65_0_1.value },
  5299. };
  5300. static const nir_search_expression search65 = {
  5301.    { nir_search_value_expression },
  5302.    nir_op_fsat,
  5303.    { &search65_0.value },
  5304. };
  5305.    
  5306. static const nir_search_variable replace65_0_0 = {
  5307.    { nir_search_value_variable },
  5308.    0, /* a */
  5309.    false,
  5310.    nir_type_invalid,
  5311. };
  5312.  
  5313. static const nir_search_variable replace65_0_1 = {
  5314.    { nir_search_value_variable },
  5315.    1, /* b */
  5316.    false,
  5317.    nir_type_invalid,
  5318. };
  5319. static const nir_search_expression replace65_0 = {
  5320.    { nir_search_value_expression },
  5321.    nir_op_ior,
  5322.    { &replace65_0_0.value, &replace65_0_1.value },
  5323. };
  5324. static const nir_search_expression replace65 = {
  5325.    { nir_search_value_expression },
  5326.    nir_op_b2f,
  5327.    { &replace65_0.value },
  5328. };
  5329.  
  5330. static const struct transform nir_opt_algebraic_fsat_xforms[] = {
  5331.    { &search52, &replace52.value, 6 },
  5332.    { &search53, &replace53.value, 0 },
  5333.    { &search65, &replace65.value, 0 },
  5334. };
  5335.    
  5336. static const nir_search_variable search40_0_0_0 = {
  5337.    { nir_search_value_variable },
  5338.    0, /* a */
  5339.    false,
  5340.    nir_type_invalid,
  5341. };
  5342. static const nir_search_expression search40_0_0 = {
  5343.    { nir_search_value_expression },
  5344.    nir_op_fabs,
  5345.    { &search40_0_0_0.value },
  5346. };
  5347. static const nir_search_expression search40_0 = {
  5348.    { nir_search_value_expression },
  5349.    nir_op_fneg,
  5350.    { &search40_0_0.value },
  5351. };
  5352.  
  5353. static const nir_search_constant search40_1 = {
  5354.    { nir_search_value_constant },
  5355.    { 0x0 /* 0.0 */ },
  5356. };
  5357. static const nir_search_expression search40 = {
  5358.    { nir_search_value_expression },
  5359.    nir_op_fge,
  5360.    { &search40_0.value, &search40_1.value },
  5361. };
  5362.    
  5363. static const nir_search_variable replace40_0 = {
  5364.    { nir_search_value_variable },
  5365.    0, /* a */
  5366.    false,
  5367.    nir_type_invalid,
  5368. };
  5369.  
  5370. static const nir_search_constant replace40_1 = {
  5371.    { nir_search_value_constant },
  5372.    { 0x0 /* 0.0 */ },
  5373. };
  5374. static const nir_search_expression replace40 = {
  5375.    { nir_search_value_expression },
  5376.    nir_op_feq,
  5377.    { &replace40_0.value, &replace40_1.value },
  5378. };
  5379.    
  5380. static const nir_search_variable search138_0_0 = {
  5381.    { nir_search_value_variable },
  5382.    0, /* a */
  5383.    false,
  5384.    nir_type_invalid,
  5385. };
  5386.  
  5387. static const nir_search_variable search138_0_1 = {
  5388.    { nir_search_value_variable },
  5389.    1, /* b */
  5390.    true,
  5391.    nir_type_invalid,
  5392. };
  5393.  
  5394. static const nir_search_variable search138_0_2 = {
  5395.    { nir_search_value_variable },
  5396.    2, /* c */
  5397.    true,
  5398.    nir_type_invalid,
  5399. };
  5400. static const nir_search_expression search138_0 = {
  5401.    { nir_search_value_expression },
  5402.    nir_op_bcsel,
  5403.    { &search138_0_0.value, &search138_0_1.value, &search138_0_2.value },
  5404. };
  5405.  
  5406. static const nir_search_variable search138_1 = {
  5407.    { nir_search_value_variable },
  5408.    3, /* d */
  5409.    true,
  5410.    nir_type_invalid,
  5411. };
  5412. static const nir_search_expression search138 = {
  5413.    { nir_search_value_expression },
  5414.    nir_op_fge,
  5415.    { &search138_0.value, &search138_1.value },
  5416. };
  5417.    
  5418. static const nir_search_variable replace138_0 = {
  5419.    { nir_search_value_variable },
  5420.    0, /* a */
  5421.    false,
  5422.    nir_type_invalid,
  5423. };
  5424.  
  5425. static const nir_search_variable replace138_1_0 = {
  5426.    { nir_search_value_variable },
  5427.    1, /* b */
  5428.    false,
  5429.    nir_type_invalid,
  5430. };
  5431.  
  5432. static const nir_search_variable replace138_1_1 = {
  5433.    { nir_search_value_variable },
  5434.    3, /* d */
  5435.    false,
  5436.    nir_type_invalid,
  5437. };
  5438. static const nir_search_expression replace138_1 = {
  5439.    { nir_search_value_expression },
  5440.    nir_op_fge,
  5441.    { &replace138_1_0.value, &replace138_1_1.value },
  5442. };
  5443.  
  5444. static const nir_search_variable replace138_2_0 = {
  5445.    { nir_search_value_variable },
  5446.    2, /* c */
  5447.    false,
  5448.    nir_type_invalid,
  5449. };
  5450.  
  5451. static const nir_search_variable replace138_2_1 = {
  5452.    { nir_search_value_variable },
  5453.    3, /* d */
  5454.    false,
  5455.    nir_type_invalid,
  5456. };
  5457. static const nir_search_expression replace138_2 = {
  5458.    { nir_search_value_expression },
  5459.    nir_op_fge,
  5460.    { &replace138_2_0.value, &replace138_2_1.value },
  5461. };
  5462. static const nir_search_expression replace138 = {
  5463.    { nir_search_value_expression },
  5464.    nir_op_bcsel,
  5465.    { &replace138_0.value, &replace138_1.value, &replace138_2.value },
  5466. };
  5467.    
  5468. static const nir_search_variable search139_0 = {
  5469.    { nir_search_value_variable },
  5470.    0, /* d */
  5471.    true,
  5472.    nir_type_invalid,
  5473. };
  5474.  
  5475. static const nir_search_variable search139_1_0 = {
  5476.    { nir_search_value_variable },
  5477.    1, /* a */
  5478.    false,
  5479.    nir_type_invalid,
  5480. };
  5481.  
  5482. static const nir_search_variable search139_1_1 = {
  5483.    { nir_search_value_variable },
  5484.    2, /* b */
  5485.    true,
  5486.    nir_type_invalid,
  5487. };
  5488.  
  5489. static const nir_search_variable search139_1_2 = {
  5490.    { nir_search_value_variable },
  5491.    3, /* c */
  5492.    true,
  5493.    nir_type_invalid,
  5494. };
  5495. static const nir_search_expression search139_1 = {
  5496.    { nir_search_value_expression },
  5497.    nir_op_bcsel,
  5498.    { &search139_1_0.value, &search139_1_1.value, &search139_1_2.value },
  5499. };
  5500. static const nir_search_expression search139 = {
  5501.    { nir_search_value_expression },
  5502.    nir_op_fge,
  5503.    { &search139_0.value, &search139_1.value },
  5504. };
  5505.    
  5506. static const nir_search_variable replace139_0 = {
  5507.    { nir_search_value_variable },
  5508.    1, /* a */
  5509.    false,
  5510.    nir_type_invalid,
  5511. };
  5512.  
  5513. static const nir_search_variable replace139_1_0 = {
  5514.    { nir_search_value_variable },
  5515.    0, /* d */
  5516.    false,
  5517.    nir_type_invalid,
  5518. };
  5519.  
  5520. static const nir_search_variable replace139_1_1 = {
  5521.    { nir_search_value_variable },
  5522.    2, /* b */
  5523.    false,
  5524.    nir_type_invalid,
  5525. };
  5526. static const nir_search_expression replace139_1 = {
  5527.    { nir_search_value_expression },
  5528.    nir_op_fge,
  5529.    { &replace139_1_0.value, &replace139_1_1.value },
  5530. };
  5531.  
  5532. static const nir_search_variable replace139_2_0 = {
  5533.    { nir_search_value_variable },
  5534.    0, /* d */
  5535.    false,
  5536.    nir_type_invalid,
  5537. };
  5538.  
  5539. static const nir_search_variable replace139_2_1 = {
  5540.    { nir_search_value_variable },
  5541.    3, /* c */
  5542.    false,
  5543.    nir_type_invalid,
  5544. };
  5545. static const nir_search_expression replace139_2 = {
  5546.    { nir_search_value_expression },
  5547.    nir_op_fge,
  5548.    { &replace139_2_0.value, &replace139_2_1.value },
  5549. };
  5550. static const nir_search_expression replace139 = {
  5551.    { nir_search_value_expression },
  5552.    nir_op_bcsel,
  5553.    { &replace139_0.value, &replace139_1.value, &replace139_2.value },
  5554. };
  5555.  
  5556. static const struct transform nir_opt_algebraic_fge_xforms[] = {
  5557.    { &search40, &replace40.value, 0 },
  5558.    { &search138, &replace138.value, 0 },
  5559.    { &search139, &replace139.value, 0 },
  5560. };
  5561.    
  5562. static const nir_search_variable search100_0_0 = {
  5563.    { nir_search_value_variable },
  5564.    0, /* a */
  5565.    false,
  5566.    nir_type_invalid,
  5567. };
  5568. static const nir_search_expression search100_0 = {
  5569.    { nir_search_value_expression },
  5570.    nir_op_fexp2,
  5571.    { &search100_0_0.value },
  5572. };
  5573. static const nir_search_expression search100 = {
  5574.    { nir_search_value_expression },
  5575.    nir_op_frcp,
  5576.    { &search100_0.value },
  5577. };
  5578.    
  5579. static const nir_search_variable replace100_0_0 = {
  5580.    { nir_search_value_variable },
  5581.    0, /* a */
  5582.    false,
  5583.    nir_type_invalid,
  5584. };
  5585. static const nir_search_expression replace100_0 = {
  5586.    { nir_search_value_expression },
  5587.    nir_op_fneg,
  5588.    { &replace100_0_0.value },
  5589. };
  5590. static const nir_search_expression replace100 = {
  5591.    { nir_search_value_expression },
  5592.    nir_op_fexp2,
  5593.    { &replace100_0.value },
  5594. };
  5595.    
  5596. static const nir_search_variable search110_0_0 = {
  5597.    { nir_search_value_variable },
  5598.    0, /* a */
  5599.    false,
  5600.    nir_type_invalid,
  5601. };
  5602. static const nir_search_expression search110_0 = {
  5603.    { nir_search_value_expression },
  5604.    nir_op_frcp,
  5605.    { &search110_0_0.value },
  5606. };
  5607. static const nir_search_expression search110 = {
  5608.    { nir_search_value_expression },
  5609.    nir_op_frcp,
  5610.    { &search110_0.value },
  5611. };
  5612.    
  5613. static const nir_search_variable replace110 = {
  5614.    { nir_search_value_variable },
  5615.    0, /* a */
  5616.    false,
  5617.    nir_type_invalid,
  5618. };
  5619.    
  5620. static const nir_search_variable search111_0_0 = {
  5621.    { nir_search_value_variable },
  5622.    0, /* a */
  5623.    false,
  5624.    nir_type_invalid,
  5625. };
  5626. static const nir_search_expression search111_0 = {
  5627.    { nir_search_value_expression },
  5628.    nir_op_fsqrt,
  5629.    { &search111_0_0.value },
  5630. };
  5631. static const nir_search_expression search111 = {
  5632.    { nir_search_value_expression },
  5633.    nir_op_frcp,
  5634.    { &search111_0.value },
  5635. };
  5636.    
  5637. static const nir_search_variable replace111_0 = {
  5638.    { nir_search_value_variable },
  5639.    0, /* a */
  5640.    false,
  5641.    nir_type_invalid,
  5642. };
  5643. static const nir_search_expression replace111 = {
  5644.    { nir_search_value_expression },
  5645.    nir_op_frsq,
  5646.    { &replace111_0.value },
  5647. };
  5648.    
  5649. static const nir_search_variable search113_0_0 = {
  5650.    { nir_search_value_variable },
  5651.    0, /* a */
  5652.    false,
  5653.    nir_type_invalid,
  5654. };
  5655. static const nir_search_expression search113_0 = {
  5656.    { nir_search_value_expression },
  5657.    nir_op_frsq,
  5658.    { &search113_0_0.value },
  5659. };
  5660. static const nir_search_expression search113 = {
  5661.    { nir_search_value_expression },
  5662.    nir_op_frcp,
  5663.    { &search113_0.value },
  5664. };
  5665.    
  5666. static const nir_search_variable replace113_0 = {
  5667.    { nir_search_value_variable },
  5668.    0, /* a */
  5669.    false,
  5670.    nir_type_invalid,
  5671. };
  5672. static const nir_search_expression replace113 = {
  5673.    { nir_search_value_expression },
  5674.    nir_op_fsqrt,
  5675.    { &replace113_0.value },
  5676. };
  5677.  
  5678. static const struct transform nir_opt_algebraic_frcp_xforms[] = {
  5679.    { &search100, &replace100.value, 0 },
  5680.    { &search110, &replace110.value, 0 },
  5681.    { &search111, &replace111.value, 0 },
  5682.    { &search113, &replace113.value, 11 },
  5683. };
  5684.    
  5685. static const nir_search_variable search80_0 = {
  5686.    { nir_search_value_variable },
  5687.    0, /* a */
  5688.    false,
  5689.    nir_type_invalid,
  5690. };
  5691.  
  5692. static const nir_search_variable search80_1 = {
  5693.    { nir_search_value_variable },
  5694.    0, /* a */
  5695.    false,
  5696.    nir_type_invalid,
  5697. };
  5698. static const nir_search_expression search80 = {
  5699.    { nir_search_value_expression },
  5700.    nir_op_fxor,
  5701.    { &search80_0.value, &search80_1.value },
  5702. };
  5703.    
  5704. static const nir_search_constant replace80 = {
  5705.    { nir_search_value_constant },
  5706.    { 0x0 /* 0.0 */ },
  5707. };
  5708.  
  5709. static const struct transform nir_opt_algebraic_fxor_xforms[] = {
  5710.    { &search80, &replace80.value, 0 },
  5711. };
  5712.    
  5713. static const nir_search_constant search89_0 = {
  5714.    { nir_search_value_constant },
  5715.    { 0x0 /* 0 */ },
  5716. };
  5717.  
  5718. static const nir_search_variable search89_1 = {
  5719.    { nir_search_value_variable },
  5720.    0, /* a */
  5721.    false,
  5722.    nir_type_invalid,
  5723. };
  5724. static const nir_search_expression search89 = {
  5725.    { nir_search_value_expression },
  5726.    nir_op_ushr,
  5727.    { &search89_0.value, &search89_1.value },
  5728. };
  5729.    
  5730. static const nir_search_constant replace89 = {
  5731.    { nir_search_value_constant },
  5732.    { 0x0 /* 0 */ },
  5733. };
  5734.    
  5735. static const nir_search_variable search90_0 = {
  5736.    { nir_search_value_variable },
  5737.    0, /* a */
  5738.    false,
  5739.    nir_type_invalid,
  5740. };
  5741.  
  5742. static const nir_search_constant search90_1 = {
  5743.    { nir_search_value_constant },
  5744.    { 0x0 /* 0 */ },
  5745. };
  5746. static const nir_search_expression search90 = {
  5747.    { nir_search_value_expression },
  5748.    nir_op_ushr,
  5749.    { &search90_0.value, &search90_1.value },
  5750. };
  5751.    
  5752. static const nir_search_variable replace90 = {
  5753.    { nir_search_value_variable },
  5754.    0, /* a */
  5755.    false,
  5756.    nir_type_invalid,
  5757. };
  5758.  
  5759. static const struct transform nir_opt_algebraic_ushr_xforms[] = {
  5760.    { &search89, &replace89.value, 0 },
  5761.    { &search90, &replace90.value, 0 },
  5762. };
  5763.    
  5764. static const nir_search_variable search91_0_0 = {
  5765.    { nir_search_value_variable },
  5766.    0, /* a */
  5767.    false,
  5768.    nir_type_invalid,
  5769. };
  5770. static const nir_search_expression search91_0 = {
  5771.    { nir_search_value_expression },
  5772.    nir_op_flog2,
  5773.    { &search91_0_0.value },
  5774. };
  5775. static const nir_search_expression search91 = {
  5776.    { nir_search_value_expression },
  5777.    nir_op_fexp2,
  5778.    { &search91_0.value },
  5779. };
  5780.    
  5781. static const nir_search_variable replace91 = {
  5782.    { nir_search_value_variable },
  5783.    0, /* a */
  5784.    false,
  5785.    nir_type_invalid,
  5786. };
  5787.    
  5788. static const nir_search_variable search94_0_0_0 = {
  5789.    { nir_search_value_variable },
  5790.    0, /* a */
  5791.    false,
  5792.    nir_type_invalid,
  5793. };
  5794. static const nir_search_expression search94_0_0 = {
  5795.    { nir_search_value_expression },
  5796.    nir_op_flog2,
  5797.    { &search94_0_0_0.value },
  5798. };
  5799.  
  5800. static const nir_search_variable search94_0_1 = {
  5801.    { nir_search_value_variable },
  5802.    1, /* b */
  5803.    false,
  5804.    nir_type_invalid,
  5805. };
  5806. static const nir_search_expression search94_0 = {
  5807.    { nir_search_value_expression },
  5808.    nir_op_fmul,
  5809.    { &search94_0_0.value, &search94_0_1.value },
  5810. };
  5811. static const nir_search_expression search94 = {
  5812.    { nir_search_value_expression },
  5813.    nir_op_fexp2,
  5814.    { &search94_0.value },
  5815. };
  5816.    
  5817. static const nir_search_variable replace94_0 = {
  5818.    { nir_search_value_variable },
  5819.    0, /* a */
  5820.    false,
  5821.    nir_type_invalid,
  5822. };
  5823.  
  5824. static const nir_search_variable replace94_1 = {
  5825.    { nir_search_value_variable },
  5826.    1, /* b */
  5827.    false,
  5828.    nir_type_invalid,
  5829. };
  5830. static const nir_search_expression replace94 = {
  5831.    { nir_search_value_expression },
  5832.    nir_op_fpow,
  5833.    { &replace94_0.value, &replace94_1.value },
  5834. };
  5835.  
  5836. static const struct transform nir_opt_algebraic_fexp2_xforms[] = {
  5837.    { &search91, &replace91.value, 0 },
  5838.    { &search94, &replace94.value, 9 },
  5839. };
  5840.    
  5841. static const nir_search_constant search87_0 = {
  5842.    { nir_search_value_constant },
  5843.    { 0x0 /* 0 */ },
  5844. };
  5845.  
  5846. static const nir_search_variable search87_1 = {
  5847.    { nir_search_value_variable },
  5848.    0, /* a */
  5849.    false,
  5850.    nir_type_invalid,
  5851. };
  5852. static const nir_search_expression search87 = {
  5853.    { nir_search_value_expression },
  5854.    nir_op_ishr,
  5855.    { &search87_0.value, &search87_1.value },
  5856. };
  5857.    
  5858. static const nir_search_constant replace87 = {
  5859.    { nir_search_value_constant },
  5860.    { 0x0 /* 0 */ },
  5861. };
  5862.    
  5863. static const nir_search_variable search88_0 = {
  5864.    { nir_search_value_variable },
  5865.    0, /* a */
  5866.    false,
  5867.    nir_type_invalid,
  5868. };
  5869.  
  5870. static const nir_search_constant search88_1 = {
  5871.    { nir_search_value_constant },
  5872.    { 0x0 /* 0 */ },
  5873. };
  5874. static const nir_search_expression search88 = {
  5875.    { nir_search_value_expression },
  5876.    nir_op_ishr,
  5877.    { &search88_0.value, &search88_1.value },
  5878. };
  5879.    
  5880. static const nir_search_variable replace88 = {
  5881.    { nir_search_value_variable },
  5882.    0, /* a */
  5883.    false,
  5884.    nir_type_invalid,
  5885. };
  5886.  
  5887. static const struct transform nir_opt_algebraic_ishr_xforms[] = {
  5888.    { &search87, &replace87.value, 0 },
  5889.    { &search88, &replace88.value, 0 },
  5890. };
  5891.    
  5892. static const nir_search_variable search59_0 = {
  5893.    { nir_search_value_variable },
  5894.    0, /* a */
  5895.    false,
  5896.    nir_type_invalid,
  5897. };
  5898.  
  5899. static const nir_search_variable search59_1 = {
  5900.    { nir_search_value_variable },
  5901.    1, /* b */
  5902.    false,
  5903.    nir_type_invalid,
  5904. };
  5905. static const nir_search_expression search59 = {
  5906.    { nir_search_value_expression },
  5907.    nir_op_slt,
  5908.    { &search59_0.value, &search59_1.value },
  5909. };
  5910.    
  5911. static const nir_search_variable replace59_0_0 = {
  5912.    { nir_search_value_variable },
  5913.    0, /* a */
  5914.    false,
  5915.    nir_type_invalid,
  5916. };
  5917.  
  5918. static const nir_search_variable replace59_0_1 = {
  5919.    { nir_search_value_variable },
  5920.    1, /* b */
  5921.    false,
  5922.    nir_type_invalid,
  5923. };
  5924. static const nir_search_expression replace59_0 = {
  5925.    { nir_search_value_expression },
  5926.    nir_op_flt,
  5927.    { &replace59_0_0.value, &replace59_0_1.value },
  5928. };
  5929. static const nir_search_expression replace59 = {
  5930.    { nir_search_value_expression },
  5931.    nir_op_b2f,
  5932.    { &replace59_0.value },
  5933. };
  5934.  
  5935. static const struct transform nir_opt_algebraic_slt_xforms[] = {
  5936.    { &search59, &replace59.value, 7 },
  5937. };
  5938.    
  5939. static const nir_search_variable search124_0_0 = {
  5940.    { nir_search_value_variable },
  5941.    0, /* a */
  5942.    false,
  5943.    nir_type_invalid,
  5944. };
  5945. static const nir_search_expression search124_0 = {
  5946.    { nir_search_value_expression },
  5947.    nir_op_ftrunc,
  5948.    { &search124_0_0.value },
  5949. };
  5950. static const nir_search_expression search124 = {
  5951.    { nir_search_value_expression },
  5952.    nir_op_f2i,
  5953.    { &search124_0.value },
  5954. };
  5955.    
  5956. static const nir_search_variable replace124_0 = {
  5957.    { nir_search_value_variable },
  5958.    0, /* a */
  5959.    false,
  5960.    nir_type_invalid,
  5961. };
  5962. static const nir_search_expression replace124 = {
  5963.    { nir_search_value_expression },
  5964.    nir_op_f2i,
  5965.    { &replace124_0.value },
  5966. };
  5967.  
  5968. static const struct transform nir_opt_algebraic_f2i_xforms[] = {
  5969.    { &search124, &replace124.value, 0 },
  5970. };
  5971.    
  5972. static const nir_search_variable search67_0_0_0 = {
  5973.    { nir_search_value_variable },
  5974.    0, /* a */
  5975.    false,
  5976.    nir_type_invalid,
  5977. };
  5978. static const nir_search_expression search67_0_0 = {
  5979.    { nir_search_value_expression },
  5980.    nir_op_b2f,
  5981.    { &search67_0_0_0.value },
  5982. };
  5983. static const nir_search_expression search67_0 = {
  5984.    { nir_search_value_expression },
  5985.    nir_op_fneg,
  5986.    { &search67_0_0.value },
  5987. };
  5988.  
  5989. static const nir_search_constant search67_1 = {
  5990.    { nir_search_value_constant },
  5991.    { 0x0 /* 0 */ },
  5992. };
  5993. static const nir_search_expression search67 = {
  5994.    { nir_search_value_expression },
  5995.    nir_op_flt,
  5996.    { &search67_0.value, &search67_1.value },
  5997. };
  5998.    
  5999. static const nir_search_variable replace67 = {
  6000.    { nir_search_value_variable },
  6001.    0, /* a */
  6002.    false,
  6003.    nir_type_invalid,
  6004. };
  6005.    
  6006. static const nir_search_constant search68_0_0 = {
  6007.    { nir_search_value_constant },
  6008.    { 0x0 /* 0.0 */ },
  6009. };
  6010.  
  6011. static const nir_search_variable search68_0_1_0 = {
  6012.    { nir_search_value_variable },
  6013.    0, /* a */
  6014.    false,
  6015.    nir_type_invalid,
  6016. };
  6017. static const nir_search_expression search68_0_1 = {
  6018.    { nir_search_value_expression },
  6019.    nir_op_b2f,
  6020.    { &search68_0_1_0.value },
  6021. };
  6022. static const nir_search_expression search68_0 = {
  6023.    { nir_search_value_expression },
  6024.    nir_op_fsub,
  6025.    { &search68_0_0.value, &search68_0_1.value },
  6026. };
  6027.  
  6028. static const nir_search_constant search68_1 = {
  6029.    { nir_search_value_constant },
  6030.    { 0x0 /* 0 */ },
  6031. };
  6032. static const nir_search_expression search68 = {
  6033.    { nir_search_value_expression },
  6034.    nir_op_flt,
  6035.    { &search68_0.value, &search68_1.value },
  6036. };
  6037.    
  6038. static const nir_search_variable replace68 = {
  6039.    { nir_search_value_variable },
  6040.    0, /* a */
  6041.    false,
  6042.    nir_type_invalid,
  6043. };
  6044.    
  6045. static const nir_search_variable search136_0_0 = {
  6046.    { nir_search_value_variable },
  6047.    0, /* a */
  6048.    false,
  6049.    nir_type_invalid,
  6050. };
  6051.  
  6052. static const nir_search_variable search136_0_1 = {
  6053.    { nir_search_value_variable },
  6054.    1, /* b */
  6055.    true,
  6056.    nir_type_invalid,
  6057. };
  6058.  
  6059. static const nir_search_variable search136_0_2 = {
  6060.    { nir_search_value_variable },
  6061.    2, /* c */
  6062.    true,
  6063.    nir_type_invalid,
  6064. };
  6065. static const nir_search_expression search136_0 = {
  6066.    { nir_search_value_expression },
  6067.    nir_op_bcsel,
  6068.    { &search136_0_0.value, &search136_0_1.value, &search136_0_2.value },
  6069. };
  6070.  
  6071. static const nir_search_variable search136_1 = {
  6072.    { nir_search_value_variable },
  6073.    3, /* d */
  6074.    true,
  6075.    nir_type_invalid,
  6076. };
  6077. static const nir_search_expression search136 = {
  6078.    { nir_search_value_expression },
  6079.    nir_op_flt,
  6080.    { &search136_0.value, &search136_1.value },
  6081. };
  6082.    
  6083. static const nir_search_variable replace136_0 = {
  6084.    { nir_search_value_variable },
  6085.    0, /* a */
  6086.    false,
  6087.    nir_type_invalid,
  6088. };
  6089.  
  6090. static const nir_search_variable replace136_1_0 = {
  6091.    { nir_search_value_variable },
  6092.    1, /* b */
  6093.    false,
  6094.    nir_type_invalid,
  6095. };
  6096.  
  6097. static const nir_search_variable replace136_1_1 = {
  6098.    { nir_search_value_variable },
  6099.    3, /* d */
  6100.    false,
  6101.    nir_type_invalid,
  6102. };
  6103. static const nir_search_expression replace136_1 = {
  6104.    { nir_search_value_expression },
  6105.    nir_op_flt,
  6106.    { &replace136_1_0.value, &replace136_1_1.value },
  6107. };
  6108.  
  6109. static const nir_search_variable replace136_2_0 = {
  6110.    { nir_search_value_variable },
  6111.    2, /* c */
  6112.    false,
  6113.    nir_type_invalid,
  6114. };
  6115.  
  6116. static const nir_search_variable replace136_2_1 = {
  6117.    { nir_search_value_variable },
  6118.    3, /* d */
  6119.    false,
  6120.    nir_type_invalid,
  6121. };
  6122. static const nir_search_expression replace136_2 = {
  6123.    { nir_search_value_expression },
  6124.    nir_op_flt,
  6125.    { &replace136_2_0.value, &replace136_2_1.value },
  6126. };
  6127. static const nir_search_expression replace136 = {
  6128.    { nir_search_value_expression },
  6129.    nir_op_bcsel,
  6130.    { &replace136_0.value, &replace136_1.value, &replace136_2.value },
  6131. };
  6132.    
  6133. static const nir_search_variable search137_0 = {
  6134.    { nir_search_value_variable },
  6135.    0, /* d */
  6136.    true,
  6137.    nir_type_invalid,
  6138. };
  6139.  
  6140. static const nir_search_variable search137_1_0 = {
  6141.    { nir_search_value_variable },
  6142.    1, /* a */
  6143.    false,
  6144.    nir_type_invalid,
  6145. };
  6146.  
  6147. static const nir_search_variable search137_1_1 = {
  6148.    { nir_search_value_variable },
  6149.    2, /* b */
  6150.    true,
  6151.    nir_type_invalid,
  6152. };
  6153.  
  6154. static const nir_search_variable search137_1_2 = {
  6155.    { nir_search_value_variable },
  6156.    3, /* c */
  6157.    true,
  6158.    nir_type_invalid,
  6159. };
  6160. static const nir_search_expression search137_1 = {
  6161.    { nir_search_value_expression },
  6162.    nir_op_bcsel,
  6163.    { &search137_1_0.value, &search137_1_1.value, &search137_1_2.value },
  6164. };
  6165. static const nir_search_expression search137 = {
  6166.    { nir_search_value_expression },
  6167.    nir_op_flt,
  6168.    { &search137_0.value, &search137_1.value },
  6169. };
  6170.    
  6171. static const nir_search_variable replace137_0 = {
  6172.    { nir_search_value_variable },
  6173.    1, /* a */
  6174.    false,
  6175.    nir_type_invalid,
  6176. };
  6177.  
  6178. static const nir_search_variable replace137_1_0 = {
  6179.    { nir_search_value_variable },
  6180.    0, /* d */
  6181.    false,
  6182.    nir_type_invalid,
  6183. };
  6184.  
  6185. static const nir_search_variable replace137_1_1 = {
  6186.    { nir_search_value_variable },
  6187.    2, /* b */
  6188.    false,
  6189.    nir_type_invalid,
  6190. };
  6191. static const nir_search_expression replace137_1 = {
  6192.    { nir_search_value_expression },
  6193.    nir_op_flt,
  6194.    { &replace137_1_0.value, &replace137_1_1.value },
  6195. };
  6196.  
  6197. static const nir_search_variable replace137_2_0 = {
  6198.    { nir_search_value_variable },
  6199.    0, /* d */
  6200.    false,
  6201.    nir_type_invalid,
  6202. };
  6203.  
  6204. static const nir_search_variable replace137_2_1 = {
  6205.    { nir_search_value_variable },
  6206.    3, /* c */
  6207.    false,
  6208.    nir_type_invalid,
  6209. };
  6210. static const nir_search_expression replace137_2 = {
  6211.    { nir_search_value_expression },
  6212.    nir_op_flt,
  6213.    { &replace137_2_0.value, &replace137_2_1.value },
  6214. };
  6215. static const nir_search_expression replace137 = {
  6216.    { nir_search_value_expression },
  6217.    nir_op_bcsel,
  6218.    { &replace137_0.value, &replace137_1.value, &replace137_2.value },
  6219. };
  6220.  
  6221. static const struct transform nir_opt_algebraic_flt_xforms[] = {
  6222.    { &search67, &replace67.value, 0 },
  6223.    { &search68, &replace68.value, 0 },
  6224.    { &search136, &replace136.value, 0 },
  6225.    { &search137, &replace137.value, 0 },
  6226. };
  6227.    
  6228. static const nir_search_variable search73_0 = {
  6229.    { nir_search_value_variable },
  6230.    0, /* a */
  6231.    false,
  6232.    nir_type_invalid,
  6233. };
  6234.  
  6235. static const nir_search_variable search73_1 = {
  6236.    { nir_search_value_variable },
  6237.    0, /* a */
  6238.    false,
  6239.    nir_type_invalid,
  6240. };
  6241. static const nir_search_expression search73 = {
  6242.    { nir_search_value_expression },
  6243.    nir_op_ult,
  6244.    { &search73_0.value, &search73_1.value },
  6245. };
  6246.    
  6247. static const nir_search_constant replace73 = {
  6248.    { nir_search_value_constant },
  6249.    { NIR_FALSE /* False */ },
  6250. };
  6251.    
  6252. static const nir_search_variable search152_0_0 = {
  6253.    { nir_search_value_variable },
  6254.    0, /* a */
  6255.    false,
  6256.    nir_type_invalid,
  6257. };
  6258.  
  6259. static const nir_search_variable search152_0_1 = {
  6260.    { nir_search_value_variable },
  6261.    1, /* b */
  6262.    true,
  6263.    nir_type_invalid,
  6264. };
  6265.  
  6266. static const nir_search_variable search152_0_2 = {
  6267.    { nir_search_value_variable },
  6268.    2, /* c */
  6269.    true,
  6270.    nir_type_invalid,
  6271. };
  6272. static const nir_search_expression search152_0 = {
  6273.    { nir_search_value_expression },
  6274.    nir_op_bcsel,
  6275.    { &search152_0_0.value, &search152_0_1.value, &search152_0_2.value },
  6276. };
  6277.  
  6278. static const nir_search_variable search152_1 = {
  6279.    { nir_search_value_variable },
  6280.    3, /* d */
  6281.    true,
  6282.    nir_type_invalid,
  6283. };
  6284. static const nir_search_expression search152 = {
  6285.    { nir_search_value_expression },
  6286.    nir_op_ult,
  6287.    { &search152_0.value, &search152_1.value },
  6288. };
  6289.    
  6290. static const nir_search_variable replace152_0 = {
  6291.    { nir_search_value_variable },
  6292.    0, /* a */
  6293.    false,
  6294.    nir_type_invalid,
  6295. };
  6296.  
  6297. static const nir_search_variable replace152_1_0 = {
  6298.    { nir_search_value_variable },
  6299.    1, /* b */
  6300.    false,
  6301.    nir_type_invalid,
  6302. };
  6303.  
  6304. static const nir_search_variable replace152_1_1 = {
  6305.    { nir_search_value_variable },
  6306.    3, /* d */
  6307.    false,
  6308.    nir_type_invalid,
  6309. };
  6310. static const nir_search_expression replace152_1 = {
  6311.    { nir_search_value_expression },
  6312.    nir_op_ult,
  6313.    { &replace152_1_0.value, &replace152_1_1.value },
  6314. };
  6315.  
  6316. static const nir_search_variable replace152_2_0 = {
  6317.    { nir_search_value_variable },
  6318.    2, /* c */
  6319.    false,
  6320.    nir_type_invalid,
  6321. };
  6322.  
  6323. static const nir_search_variable replace152_2_1 = {
  6324.    { nir_search_value_variable },
  6325.    3, /* d */
  6326.    false,
  6327.    nir_type_invalid,
  6328. };
  6329. static const nir_search_expression replace152_2 = {
  6330.    { nir_search_value_expression },
  6331.    nir_op_ult,
  6332.    { &replace152_2_0.value, &replace152_2_1.value },
  6333. };
  6334. static const nir_search_expression replace152 = {
  6335.    { nir_search_value_expression },
  6336.    nir_op_bcsel,
  6337.    { &replace152_0.value, &replace152_1.value, &replace152_2.value },
  6338. };
  6339.    
  6340. static const nir_search_variable search153_0 = {
  6341.    { nir_search_value_variable },
  6342.    0, /* d */
  6343.    true,
  6344.    nir_type_invalid,
  6345. };
  6346.  
  6347. static const nir_search_variable search153_1_0 = {
  6348.    { nir_search_value_variable },
  6349.    1, /* a */
  6350.    false,
  6351.    nir_type_invalid,
  6352. };
  6353.  
  6354. static const nir_search_variable search153_1_1 = {
  6355.    { nir_search_value_variable },
  6356.    2, /* b */
  6357.    true,
  6358.    nir_type_invalid,
  6359. };
  6360.  
  6361. static const nir_search_variable search153_1_2 = {
  6362.    { nir_search_value_variable },
  6363.    3, /* c */
  6364.    true,
  6365.    nir_type_invalid,
  6366. };
  6367. static const nir_search_expression search153_1 = {
  6368.    { nir_search_value_expression },
  6369.    nir_op_bcsel,
  6370.    { &search153_1_0.value, &search153_1_1.value, &search153_1_2.value },
  6371. };
  6372. static const nir_search_expression search153 = {
  6373.    { nir_search_value_expression },
  6374.    nir_op_ult,
  6375.    { &search153_0.value, &search153_1.value },
  6376. };
  6377.    
  6378. static const nir_search_variable replace153_0 = {
  6379.    { nir_search_value_variable },
  6380.    1, /* a */
  6381.    false,
  6382.    nir_type_invalid,
  6383. };
  6384.  
  6385. static const nir_search_variable replace153_1_0 = {
  6386.    { nir_search_value_variable },
  6387.    0, /* d */
  6388.    false,
  6389.    nir_type_invalid,
  6390. };
  6391.  
  6392. static const nir_search_variable replace153_1_1 = {
  6393.    { nir_search_value_variable },
  6394.    2, /* b */
  6395.    false,
  6396.    nir_type_invalid,
  6397. };
  6398. static const nir_search_expression replace153_1 = {
  6399.    { nir_search_value_expression },
  6400.    nir_op_ult,
  6401.    { &replace153_1_0.value, &replace153_1_1.value },
  6402. };
  6403.  
  6404. static const nir_search_variable replace153_2_0 = {
  6405.    { nir_search_value_variable },
  6406.    0, /* d */
  6407.    false,
  6408.    nir_type_invalid,
  6409. };
  6410.  
  6411. static const nir_search_variable replace153_2_1 = {
  6412.    { nir_search_value_variable },
  6413.    3, /* c */
  6414.    false,
  6415.    nir_type_invalid,
  6416. };
  6417. static const nir_search_expression replace153_2 = {
  6418.    { nir_search_value_expression },
  6419.    nir_op_ult,
  6420.    { &replace153_2_0.value, &replace153_2_1.value },
  6421. };
  6422. static const nir_search_expression replace153 = {
  6423.    { nir_search_value_expression },
  6424.    nir_op_bcsel,
  6425.    { &replace153_0.value, &replace153_1.value, &replace153_2.value },
  6426. };
  6427.  
  6428. static const struct transform nir_opt_algebraic_ult_xforms[] = {
  6429.    { &search73, &replace73.value, 0 },
  6430.    { &search152, &replace152.value, 0 },
  6431.    { &search153, &replace153.value, 0 },
  6432. };
  6433.    
  6434. static const nir_search_variable search126_0 = {
  6435.    { nir_search_value_variable },
  6436.    0, /* a */
  6437.    false,
  6438.    nir_type_invalid,
  6439. };
  6440.  
  6441. static const nir_search_constant search126_1_0 = {
  6442.    { nir_search_value_constant },
  6443.    { 0x0 /* 0.0 */ },
  6444. };
  6445.  
  6446. static const nir_search_variable search126_1_1 = {
  6447.    { nir_search_value_variable },
  6448.    1, /* b */
  6449.    false,
  6450.    nir_type_invalid,
  6451. };
  6452. static const nir_search_expression search126_1 = {
  6453.    { nir_search_value_expression },
  6454.    nir_op_fsub,
  6455.    { &search126_1_0.value, &search126_1_1.value },
  6456. };
  6457. static const nir_search_expression search126 = {
  6458.    { nir_search_value_expression },
  6459.    nir_op_fsub,
  6460.    { &search126_0.value, &search126_1.value },
  6461. };
  6462.    
  6463. static const nir_search_variable replace126_0 = {
  6464.    { nir_search_value_variable },
  6465.    0, /* a */
  6466.    false,
  6467.    nir_type_invalid,
  6468. };
  6469.  
  6470. static const nir_search_variable replace126_1 = {
  6471.    { nir_search_value_variable },
  6472.    1, /* b */
  6473.    false,
  6474.    nir_type_invalid,
  6475. };
  6476. static const nir_search_expression replace126 = {
  6477.    { nir_search_value_expression },
  6478.    nir_op_fadd,
  6479.    { &replace126_0.value, &replace126_1.value },
  6480. };
  6481.    
  6482. static const nir_search_variable search128_0 = {
  6483.    { nir_search_value_variable },
  6484.    0, /* a */
  6485.    false,
  6486.    nir_type_invalid,
  6487. };
  6488.  
  6489. static const nir_search_variable search128_1 = {
  6490.    { nir_search_value_variable },
  6491.    1, /* b */
  6492.    false,
  6493.    nir_type_invalid,
  6494. };
  6495. static const nir_search_expression search128 = {
  6496.    { nir_search_value_expression },
  6497.    nir_op_fsub,
  6498.    { &search128_0.value, &search128_1.value },
  6499. };
  6500.    
  6501. static const nir_search_variable replace128_0 = {
  6502.    { nir_search_value_variable },
  6503.    0, /* a */
  6504.    false,
  6505.    nir_type_invalid,
  6506. };
  6507.  
  6508. static const nir_search_variable replace128_1_0 = {
  6509.    { nir_search_value_variable },
  6510.    1, /* b */
  6511.    false,
  6512.    nir_type_invalid,
  6513. };
  6514. static const nir_search_expression replace128_1 = {
  6515.    { nir_search_value_expression },
  6516.    nir_op_fneg,
  6517.    { &replace128_1_0.value },
  6518. };
  6519. static const nir_search_expression replace128 = {
  6520.    { nir_search_value_expression },
  6521.    nir_op_fadd,
  6522.    { &replace128_0.value, &replace128_1.value },
  6523. };
  6524.  
  6525. static const struct transform nir_opt_algebraic_fsub_xforms[] = {
  6526.    { &search126, &replace126.value, 0 },
  6527.    { &search128, &replace128.value, 12 },
  6528. };
  6529.    
  6530. static const nir_search_variable search0_0_0 = {
  6531.    { nir_search_value_variable },
  6532.    0, /* a */
  6533.    false,
  6534.    nir_type_invalid,
  6535. };
  6536. static const nir_search_expression search0_0 = {
  6537.    { nir_search_value_expression },
  6538.    nir_op_fneg,
  6539.    { &search0_0_0.value },
  6540. };
  6541. static const nir_search_expression search0 = {
  6542.    { nir_search_value_expression },
  6543.    nir_op_fneg,
  6544.    { &search0_0.value },
  6545. };
  6546.    
  6547. static const nir_search_variable replace0 = {
  6548.    { nir_search_value_variable },
  6549.    0, /* a */
  6550.    false,
  6551.    nir_type_invalid,
  6552. };
  6553.    
  6554. static const nir_search_variable search130_0 = {
  6555.    { nir_search_value_variable },
  6556.    0, /* a */
  6557.    false,
  6558.    nir_type_invalid,
  6559. };
  6560. static const nir_search_expression search130 = {
  6561.    { nir_search_value_expression },
  6562.    nir_op_fneg,
  6563.    { &search130_0.value },
  6564. };
  6565.    
  6566. static const nir_search_constant replace130_0 = {
  6567.    { nir_search_value_constant },
  6568.    { 0x0 /* 0.0 */ },
  6569. };
  6570.  
  6571. static const nir_search_variable replace130_1 = {
  6572.    { nir_search_value_variable },
  6573.    0, /* a */
  6574.    false,
  6575.    nir_type_invalid,
  6576. };
  6577. static const nir_search_expression replace130 = {
  6578.    { nir_search_value_expression },
  6579.    nir_op_fsub,
  6580.    { &replace130_0.value, &replace130_1.value },
  6581. };
  6582.  
  6583. static const struct transform nir_opt_algebraic_fneg_xforms[] = {
  6584.    { &search0, &replace0.value, 0 },
  6585.    { &search130, &replace130.value, 13 },
  6586. };
  6587.    
  6588. static const nir_search_variable search69_0 = {
  6589.    { nir_search_value_variable },
  6590.    0, /* a */
  6591.    false,
  6592.    nir_type_invalid,
  6593. };
  6594.  
  6595. static const nir_search_variable search69_1 = {
  6596.    { nir_search_value_variable },
  6597.    0, /* a */
  6598.    false,
  6599.    nir_type_invalid,
  6600. };
  6601. static const nir_search_expression search69 = {
  6602.    { nir_search_value_expression },
  6603.    nir_op_ilt,
  6604.    { &search69_0.value, &search69_1.value },
  6605. };
  6606.    
  6607. static const nir_search_constant replace69 = {
  6608.    { nir_search_value_constant },
  6609.    { NIR_FALSE /* False */ },
  6610. };
  6611.    
  6612. static const nir_search_variable search144_0_0 = {
  6613.    { nir_search_value_variable },
  6614.    0, /* a */
  6615.    false,
  6616.    nir_type_invalid,
  6617. };
  6618.  
  6619. static const nir_search_variable search144_0_1 = {
  6620.    { nir_search_value_variable },
  6621.    1, /* b */
  6622.    true,
  6623.    nir_type_invalid,
  6624. };
  6625.  
  6626. static const nir_search_variable search144_0_2 = {
  6627.    { nir_search_value_variable },
  6628.    2, /* c */
  6629.    true,
  6630.    nir_type_invalid,
  6631. };
  6632. static const nir_search_expression search144_0 = {
  6633.    { nir_search_value_expression },
  6634.    nir_op_bcsel,
  6635.    { &search144_0_0.value, &search144_0_1.value, &search144_0_2.value },
  6636. };
  6637.  
  6638. static const nir_search_variable search144_1 = {
  6639.    { nir_search_value_variable },
  6640.    3, /* d */
  6641.    true,
  6642.    nir_type_invalid,
  6643. };
  6644. static const nir_search_expression search144 = {
  6645.    { nir_search_value_expression },
  6646.    nir_op_ilt,
  6647.    { &search144_0.value, &search144_1.value },
  6648. };
  6649.    
  6650. static const nir_search_variable replace144_0 = {
  6651.    { nir_search_value_variable },
  6652.    0, /* a */
  6653.    false,
  6654.    nir_type_invalid,
  6655. };
  6656.  
  6657. static const nir_search_variable replace144_1_0 = {
  6658.    { nir_search_value_variable },
  6659.    1, /* b */
  6660.    false,
  6661.    nir_type_invalid,
  6662. };
  6663.  
  6664. static const nir_search_variable replace144_1_1 = {
  6665.    { nir_search_value_variable },
  6666.    3, /* d */
  6667.    false,
  6668.    nir_type_invalid,
  6669. };
  6670. static const nir_search_expression replace144_1 = {
  6671.    { nir_search_value_expression },
  6672.    nir_op_ilt,
  6673.    { &replace144_1_0.value, &replace144_1_1.value },
  6674. };
  6675.  
  6676. static const nir_search_variable replace144_2_0 = {
  6677.    { nir_search_value_variable },
  6678.    2, /* c */
  6679.    false,
  6680.    nir_type_invalid,
  6681. };
  6682.  
  6683. static const nir_search_variable replace144_2_1 = {
  6684.    { nir_search_value_variable },
  6685.    3, /* d */
  6686.    false,
  6687.    nir_type_invalid,
  6688. };
  6689. static const nir_search_expression replace144_2 = {
  6690.    { nir_search_value_expression },
  6691.    nir_op_ilt,
  6692.    { &replace144_2_0.value, &replace144_2_1.value },
  6693. };
  6694. static const nir_search_expression replace144 = {
  6695.    { nir_search_value_expression },
  6696.    nir_op_bcsel,
  6697.    { &replace144_0.value, &replace144_1.value, &replace144_2.value },
  6698. };
  6699.    
  6700. static const nir_search_variable search145_0 = {
  6701.    { nir_search_value_variable },
  6702.    0, /* d */
  6703.    true,
  6704.    nir_type_invalid,
  6705. };
  6706.  
  6707. static const nir_search_variable search145_1_0 = {
  6708.    { nir_search_value_variable },
  6709.    1, /* a */
  6710.    false,
  6711.    nir_type_invalid,
  6712. };
  6713.  
  6714. static const nir_search_variable search145_1_1 = {
  6715.    { nir_search_value_variable },
  6716.    2, /* b */
  6717.    true,
  6718.    nir_type_invalid,
  6719. };
  6720.  
  6721. static const nir_search_variable search145_1_2 = {
  6722.    { nir_search_value_variable },
  6723.    3, /* c */
  6724.    true,
  6725.    nir_type_invalid,
  6726. };
  6727. static const nir_search_expression search145_1 = {
  6728.    { nir_search_value_expression },
  6729.    nir_op_bcsel,
  6730.    { &search145_1_0.value, &search145_1_1.value, &search145_1_2.value },
  6731. };
  6732. static const nir_search_expression search145 = {
  6733.    { nir_search_value_expression },
  6734.    nir_op_ilt,
  6735.    { &search145_0.value, &search145_1.value },
  6736. };
  6737.    
  6738. static const nir_search_variable replace145_0 = {
  6739.    { nir_search_value_variable },
  6740.    1, /* a */
  6741.    false,
  6742.    nir_type_invalid,
  6743. };
  6744.  
  6745. static const nir_search_variable replace145_1_0 = {
  6746.    { nir_search_value_variable },
  6747.    0, /* d */
  6748.    false,
  6749.    nir_type_invalid,
  6750. };
  6751.  
  6752. static const nir_search_variable replace145_1_1 = {
  6753.    { nir_search_value_variable },
  6754.    2, /* b */
  6755.    false,
  6756.    nir_type_invalid,
  6757. };
  6758. static const nir_search_expression replace145_1 = {
  6759.    { nir_search_value_expression },
  6760.    nir_op_ilt,
  6761.    { &replace145_1_0.value, &replace145_1_1.value },
  6762. };
  6763.  
  6764. static const nir_search_variable replace145_2_0 = {
  6765.    { nir_search_value_variable },
  6766.    0, /* d */
  6767.    false,
  6768.    nir_type_invalid,
  6769. };
  6770.  
  6771. static const nir_search_variable replace145_2_1 = {
  6772.    { nir_search_value_variable },
  6773.    3, /* c */
  6774.    false,
  6775.    nir_type_invalid,
  6776. };
  6777. static const nir_search_expression replace145_2 = {
  6778.    { nir_search_value_expression },
  6779.    nir_op_ilt,
  6780.    { &replace145_2_0.value, &replace145_2_1.value },
  6781. };
  6782. static const nir_search_expression replace145 = {
  6783.    { nir_search_value_expression },
  6784.    nir_op_bcsel,
  6785.    { &replace145_0.value, &replace145_1.value, &replace145_2.value },
  6786. };
  6787.  
  6788. static const struct transform nir_opt_algebraic_ilt_xforms[] = {
  6789.    { &search69, &replace69.value, 0 },
  6790.    { &search144, &replace144.value, 0 },
  6791.    { &search145, &replace145.value, 0 },
  6792. };
  6793.    
  6794. static const nir_search_variable search4_0_0 = {
  6795.    { nir_search_value_variable },
  6796.    0, /* a */
  6797.    false,
  6798.    nir_type_invalid,
  6799. };
  6800. static const nir_search_expression search4_0 = {
  6801.    { nir_search_value_expression },
  6802.    nir_op_iabs,
  6803.    { &search4_0_0.value },
  6804. };
  6805. static const nir_search_expression search4 = {
  6806.    { nir_search_value_expression },
  6807.    nir_op_iabs,
  6808.    { &search4_0.value },
  6809. };
  6810.    
  6811. static const nir_search_variable replace4_0 = {
  6812.    { nir_search_value_variable },
  6813.    0, /* a */
  6814.    false,
  6815.    nir_type_invalid,
  6816. };
  6817. static const nir_search_expression replace4 = {
  6818.    { nir_search_value_expression },
  6819.    nir_op_iabs,
  6820.    { &replace4_0.value },
  6821. };
  6822.    
  6823. static const nir_search_variable search5_0_0 = {
  6824.    { nir_search_value_variable },
  6825.    0, /* a */
  6826.    false,
  6827.    nir_type_invalid,
  6828. };
  6829. static const nir_search_expression search5_0 = {
  6830.    { nir_search_value_expression },
  6831.    nir_op_ineg,
  6832.    { &search5_0_0.value },
  6833. };
  6834. static const nir_search_expression search5 = {
  6835.    { nir_search_value_expression },
  6836.    nir_op_iabs,
  6837.    { &search5_0.value },
  6838. };
  6839.    
  6840. static const nir_search_variable replace5_0 = {
  6841.    { nir_search_value_variable },
  6842.    0, /* a */
  6843.    false,
  6844.    nir_type_invalid,
  6845. };
  6846. static const nir_search_expression replace5 = {
  6847.    { nir_search_value_expression },
  6848.    nir_op_iabs,
  6849.    { &replace5_0.value },
  6850. };
  6851.    
  6852. static const nir_search_constant search135_0_0 = {
  6853.    { nir_search_value_constant },
  6854.    { 0x0 /* 0 */ },
  6855. };
  6856.  
  6857. static const nir_search_variable search135_0_1 = {
  6858.    { nir_search_value_variable },
  6859.    0, /* a */
  6860.    false,
  6861.    nir_type_invalid,
  6862. };
  6863. static const nir_search_expression search135_0 = {
  6864.    { nir_search_value_expression },
  6865.    nir_op_isub,
  6866.    { &search135_0_0.value, &search135_0_1.value },
  6867. };
  6868. static const nir_search_expression search135 = {
  6869.    { nir_search_value_expression },
  6870.    nir_op_iabs,
  6871.    { &search135_0.value },
  6872. };
  6873.    
  6874. static const nir_search_variable replace135_0 = {
  6875.    { nir_search_value_variable },
  6876.    0, /* a */
  6877.    false,
  6878.    nir_type_invalid,
  6879. };
  6880. static const nir_search_expression replace135 = {
  6881.    { nir_search_value_expression },
  6882.    nir_op_iabs,
  6883.    { &replace135_0.value },
  6884. };
  6885.  
  6886. static const struct transform nir_opt_algebraic_iabs_xforms[] = {
  6887.    { &search4, &replace4.value, 0 },
  6888.    { &search5, &replace5.value, 0 },
  6889.    { &search135, &replace135.value, 0 },
  6890. };
  6891.    
  6892. static const nir_search_variable search45_0 = {
  6893.    { nir_search_value_variable },
  6894.    0, /* a */
  6895.    false,
  6896.    nir_type_invalid,
  6897. };
  6898.  
  6899. static const nir_search_variable search45_1 = {
  6900.    { nir_search_value_variable },
  6901.    0, /* a */
  6902.    false,
  6903.    nir_type_invalid,
  6904. };
  6905. static const nir_search_expression search45 = {
  6906.    { nir_search_value_expression },
  6907.    nir_op_fmin,
  6908.    { &search45_0.value, &search45_1.value },
  6909. };
  6910.    
  6911. static const nir_search_variable replace45 = {
  6912.    { nir_search_value_variable },
  6913.    0, /* a */
  6914.    false,
  6915.    nir_type_invalid,
  6916. };
  6917.    
  6918. static const nir_search_variable search51_0_0 = {
  6919.    { nir_search_value_variable },
  6920.    0, /* a */
  6921.    false,
  6922.    nir_type_invalid,
  6923. };
  6924.  
  6925. static const nir_search_constant search51_0_1 = {
  6926.    { nir_search_value_constant },
  6927.    { 0x0 /* 0.0 */ },
  6928. };
  6929. static const nir_search_expression search51_0 = {
  6930.    { nir_search_value_expression },
  6931.    nir_op_fmax,
  6932.    { &search51_0_0.value, &search51_0_1.value },
  6933. };
  6934.  
  6935. static const nir_search_constant search51_1 = {
  6936.    { nir_search_value_constant },
  6937.    { 0x3f800000 /* 1.0 */ },
  6938. };
  6939. static const nir_search_expression search51 = {
  6940.    { nir_search_value_expression },
  6941.    nir_op_fmin,
  6942.    { &search51_0.value, &search51_1.value },
  6943. };
  6944.    
  6945. static const nir_search_variable replace51_0 = {
  6946.    { nir_search_value_variable },
  6947.    0, /* a */
  6948.    false,
  6949.    nir_type_invalid,
  6950. };
  6951. static const nir_search_expression replace51 = {
  6952.    { nir_search_value_expression },
  6953.    nir_op_fsat,
  6954.    { &replace51_0.value },
  6955. };
  6956.    
  6957. static const nir_search_variable search54_0_0_0_0 = {
  6958.    { nir_search_value_variable },
  6959.    0, /* a */
  6960.    false,
  6961.    nir_type_invalid,
  6962. };
  6963.  
  6964. static const nir_search_constant search54_0_0_0_1 = {
  6965.    { nir_search_value_constant },
  6966.    { 0x0 /* 0.0 */ },
  6967. };
  6968. static const nir_search_expression search54_0_0_0 = {
  6969.    { nir_search_value_expression },
  6970.    nir_op_fmax,
  6971.    { &search54_0_0_0_0.value, &search54_0_0_0_1.value },
  6972. };
  6973.  
  6974. static const nir_search_constant search54_0_0_1 = {
  6975.    { nir_search_value_constant },
  6976.    { 0x3f800000 /* 1.0 */ },
  6977. };
  6978. static const nir_search_expression search54_0_0 = {
  6979.    { nir_search_value_expression },
  6980.    nir_op_fmin,
  6981.    { &search54_0_0_0.value, &search54_0_0_1.value },
  6982. };
  6983.  
  6984. static const nir_search_constant search54_0_1 = {
  6985.    { nir_search_value_constant },
  6986.    { 0x0 /* 0.0 */ },
  6987. };
  6988. static const nir_search_expression search54_0 = {
  6989.    { nir_search_value_expression },
  6990.    nir_op_fmax,
  6991.    { &search54_0_0.value, &search54_0_1.value },
  6992. };
  6993.  
  6994. static const nir_search_constant search54_1 = {
  6995.    { nir_search_value_constant },
  6996.    { 0x3f800000 /* 1.0 */ },
  6997. };
  6998. static const nir_search_expression search54 = {
  6999.    { nir_search_value_expression },
  7000.    nir_op_fmin,
  7001.    { &search54_0.value, &search54_1.value },
  7002. };
  7003.    
  7004. static const nir_search_variable replace54_0_0 = {
  7005.    { nir_search_value_variable },
  7006.    0, /* a */
  7007.    false,
  7008.    nir_type_invalid,
  7009. };
  7010.  
  7011. static const nir_search_constant replace54_0_1 = {
  7012.    { nir_search_value_constant },
  7013.    { 0x0 /* 0.0 */ },
  7014. };
  7015. static const nir_search_expression replace54_0 = {
  7016.    { nir_search_value_expression },
  7017.    nir_op_fmax,
  7018.    { &replace54_0_0.value, &replace54_0_1.value },
  7019. };
  7020.  
  7021. static const nir_search_constant replace54_1 = {
  7022.    { nir_search_value_constant },
  7023.    { 0x3f800000 /* 1.0 */ },
  7024. };
  7025. static const nir_search_expression replace54 = {
  7026.    { nir_search_value_expression },
  7027.    nir_op_fmin,
  7028.    { &replace54_0.value, &replace54_1.value },
  7029. };
  7030.  
  7031. static const struct transform nir_opt_algebraic_fmin_xforms[] = {
  7032.    { &search45, &replace45.value, 0 },
  7033.    { &search51, &replace51.value, 5 },
  7034.    { &search54, &replace54.value, 0 },
  7035. };
  7036.    
  7037. static const nir_search_variable search72_0 = {
  7038.    { nir_search_value_variable },
  7039.    0, /* a */
  7040.    false,
  7041.    nir_type_invalid,
  7042. };
  7043.  
  7044. static const nir_search_variable search72_1 = {
  7045.    { nir_search_value_variable },
  7046.    0, /* a */
  7047.    false,
  7048.    nir_type_invalid,
  7049. };
  7050. static const nir_search_expression search72 = {
  7051.    { nir_search_value_expression },
  7052.    nir_op_ine,
  7053.    { &search72_0.value, &search72_1.value },
  7054. };
  7055.    
  7056. static const nir_search_constant replace72 = {
  7057.    { nir_search_value_constant },
  7058.    { NIR_FALSE /* False */ },
  7059. };
  7060.    
  7061. static const nir_search_variable search114_0 = {
  7062.    { nir_search_value_variable },
  7063.    0, /* a */
  7064.    false,
  7065.    nir_type_bool,
  7066. };
  7067.  
  7068. static const nir_search_constant search114_1 = {
  7069.    { nir_search_value_constant },
  7070.    { 0x0 /* 0 */ },
  7071. };
  7072. static const nir_search_expression search114 = {
  7073.    { nir_search_value_expression },
  7074.    nir_op_ine,
  7075.    { &search114_0.value, &search114_1.value },
  7076. };
  7077.    
  7078. static const nir_search_variable replace114 = {
  7079.    { nir_search_value_variable },
  7080.    0, /* a */
  7081.    false,
  7082.    nir_type_invalid,
  7083. };
  7084.    
  7085. static const nir_search_variable search150_0_0 = {
  7086.    { nir_search_value_variable },
  7087.    0, /* a */
  7088.    false,
  7089.    nir_type_invalid,
  7090. };
  7091.  
  7092. static const nir_search_variable search150_0_1 = {
  7093.    { nir_search_value_variable },
  7094.    1, /* b */
  7095.    true,
  7096.    nir_type_invalid,
  7097. };
  7098.  
  7099. static const nir_search_variable search150_0_2 = {
  7100.    { nir_search_value_variable },
  7101.    2, /* c */
  7102.    true,
  7103.    nir_type_invalid,
  7104. };
  7105. static const nir_search_expression search150_0 = {
  7106.    { nir_search_value_expression },
  7107.    nir_op_bcsel,
  7108.    { &search150_0_0.value, &search150_0_1.value, &search150_0_2.value },
  7109. };
  7110.  
  7111. static const nir_search_variable search150_1 = {
  7112.    { nir_search_value_variable },
  7113.    3, /* d */
  7114.    true,
  7115.    nir_type_invalid,
  7116. };
  7117. static const nir_search_expression search150 = {
  7118.    { nir_search_value_expression },
  7119.    nir_op_ine,
  7120.    { &search150_0.value, &search150_1.value },
  7121. };
  7122.    
  7123. static const nir_search_variable replace150_0 = {
  7124.    { nir_search_value_variable },
  7125.    0, /* a */
  7126.    false,
  7127.    nir_type_invalid,
  7128. };
  7129.  
  7130. static const nir_search_variable replace150_1_0 = {
  7131.    { nir_search_value_variable },
  7132.    1, /* b */
  7133.    false,
  7134.    nir_type_invalid,
  7135. };
  7136.  
  7137. static const nir_search_variable replace150_1_1 = {
  7138.    { nir_search_value_variable },
  7139.    3, /* d */
  7140.    false,
  7141.    nir_type_invalid,
  7142. };
  7143. static const nir_search_expression replace150_1 = {
  7144.    { nir_search_value_expression },
  7145.    nir_op_ine,
  7146.    { &replace150_1_0.value, &replace150_1_1.value },
  7147. };
  7148.  
  7149. static const nir_search_variable replace150_2_0 = {
  7150.    { nir_search_value_variable },
  7151.    2, /* c */
  7152.    false,
  7153.    nir_type_invalid,
  7154. };
  7155.  
  7156. static const nir_search_variable replace150_2_1 = {
  7157.    { nir_search_value_variable },
  7158.    3, /* d */
  7159.    false,
  7160.    nir_type_invalid,
  7161. };
  7162. static const nir_search_expression replace150_2 = {
  7163.    { nir_search_value_expression },
  7164.    nir_op_ine,
  7165.    { &replace150_2_0.value, &replace150_2_1.value },
  7166. };
  7167. static const nir_search_expression replace150 = {
  7168.    { nir_search_value_expression },
  7169.    nir_op_bcsel,
  7170.    { &replace150_0.value, &replace150_1.value, &replace150_2.value },
  7171. };
  7172.    
  7173. static const nir_search_variable search151_0 = {
  7174.    { nir_search_value_variable },
  7175.    0, /* d */
  7176.    true,
  7177.    nir_type_invalid,
  7178. };
  7179.  
  7180. static const nir_search_variable search151_1_0 = {
  7181.    { nir_search_value_variable },
  7182.    1, /* a */
  7183.    false,
  7184.    nir_type_invalid,
  7185. };
  7186.  
  7187. static const nir_search_variable search151_1_1 = {
  7188.    { nir_search_value_variable },
  7189.    2, /* b */
  7190.    true,
  7191.    nir_type_invalid,
  7192. };
  7193.  
  7194. static const nir_search_variable search151_1_2 = {
  7195.    { nir_search_value_variable },
  7196.    3, /* c */
  7197.    true,
  7198.    nir_type_invalid,
  7199. };
  7200. static const nir_search_expression search151_1 = {
  7201.    { nir_search_value_expression },
  7202.    nir_op_bcsel,
  7203.    { &search151_1_0.value, &search151_1_1.value, &search151_1_2.value },
  7204. };
  7205. static const nir_search_expression search151 = {
  7206.    { nir_search_value_expression },
  7207.    nir_op_ine,
  7208.    { &search151_0.value, &search151_1.value },
  7209. };
  7210.    
  7211. static const nir_search_variable replace151_0 = {
  7212.    { nir_search_value_variable },
  7213.    1, /* a */
  7214.    false,
  7215.    nir_type_invalid,
  7216. };
  7217.  
  7218. static const nir_search_variable replace151_1_0 = {
  7219.    { nir_search_value_variable },
  7220.    0, /* d */
  7221.    false,
  7222.    nir_type_invalid,
  7223. };
  7224.  
  7225. static const nir_search_variable replace151_1_1 = {
  7226.    { nir_search_value_variable },
  7227.    2, /* b */
  7228.    false,
  7229.    nir_type_invalid,
  7230. };
  7231. static const nir_search_expression replace151_1 = {
  7232.    { nir_search_value_expression },
  7233.    nir_op_ine,
  7234.    { &replace151_1_0.value, &replace151_1_1.value },
  7235. };
  7236.  
  7237. static const nir_search_variable replace151_2_0 = {
  7238.    { nir_search_value_variable },
  7239.    0, /* d */
  7240.    false,
  7241.    nir_type_invalid,
  7242. };
  7243.  
  7244. static const nir_search_variable replace151_2_1 = {
  7245.    { nir_search_value_variable },
  7246.    3, /* c */
  7247.    false,
  7248.    nir_type_invalid,
  7249. };
  7250. static const nir_search_expression replace151_2 = {
  7251.    { nir_search_value_expression },
  7252.    nir_op_ine,
  7253.    { &replace151_2_0.value, &replace151_2_1.value },
  7254. };
  7255. static const nir_search_expression replace151 = {
  7256.    { nir_search_value_expression },
  7257.    nir_op_bcsel,
  7258.    { &replace151_0.value, &replace151_1.value, &replace151_2.value },
  7259. };
  7260.  
  7261. static const struct transform nir_opt_algebraic_ine_xforms[] = {
  7262.    { &search72, &replace72.value, 0 },
  7263.    { &search114, &replace114.value, 0 },
  7264.    { &search150, &replace150.value, 0 },
  7265.    { &search151, &replace151.value, 0 },
  7266. };
  7267.    
  7268. static const nir_search_variable search123_0_0 = {
  7269.    { nir_search_value_variable },
  7270.    0, /* a */
  7271.    false,
  7272.    nir_type_invalid,
  7273. };
  7274. static const nir_search_expression search123_0 = {
  7275.    { nir_search_value_expression },
  7276.    nir_op_b2i,
  7277.    { &search123_0_0.value },
  7278. };
  7279. static const nir_search_expression search123 = {
  7280.    { nir_search_value_expression },
  7281.    nir_op_i2b,
  7282.    { &search123_0.value },
  7283. };
  7284.    
  7285. static const nir_search_variable replace123 = {
  7286.    { nir_search_value_variable },
  7287.    0, /* a */
  7288.    false,
  7289.    nir_type_invalid,
  7290. };
  7291.  
  7292. static const struct transform nir_opt_algebraic_i2b_xforms[] = {
  7293.    { &search123, &replace123.value, 0 },
  7294. };
  7295.  
  7296. static bool
  7297. nir_opt_algebraic_block(nir_block *block, void *void_state)
  7298. {
  7299.    struct opt_state *state = void_state;
  7300.  
  7301.    nir_foreach_instr_safe(block, instr) {
  7302.       if (instr->type != nir_instr_type_alu)
  7303.          continue;
  7304.  
  7305.       nir_alu_instr *alu = nir_instr_as_alu(instr);
  7306.       if (!alu->dest.dest.is_ssa)
  7307.          continue;
  7308.  
  7309.       switch (alu->op) {
  7310.       case nir_op_iand:
  7311.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_iand_xforms); i++) {
  7312.             const struct transform *xform = &nir_opt_algebraic_iand_xforms[i];
  7313.             if (state->condition_flags[xform->condition_offset] &&
  7314.                 nir_replace_instr(alu, xform->search, xform->replace,
  7315.                                   state->mem_ctx)) {
  7316.                state->progress = true;
  7317.                break;
  7318.             }
  7319.          }
  7320.          break;
  7321.       case nir_op_ixor:
  7322.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ixor_xforms); i++) {
  7323.             const struct transform *xform = &nir_opt_algebraic_ixor_xforms[i];
  7324.             if (state->condition_flags[xform->condition_offset] &&
  7325.                 nir_replace_instr(alu, xform->search, xform->replace,
  7326.                                   state->mem_ctx)) {
  7327.                state->progress = true;
  7328.                break;
  7329.             }
  7330.          }
  7331.          break;
  7332.       case nir_op_seq:
  7333.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_seq_xforms); i++) {
  7334.             const struct transform *xform = &nir_opt_algebraic_seq_xforms[i];
  7335.             if (state->condition_flags[xform->condition_offset] &&
  7336.                 nir_replace_instr(alu, xform->search, xform->replace,
  7337.                                   state->mem_ctx)) {
  7338.                state->progress = true;
  7339.                break;
  7340.             }
  7341.          }
  7342.          break;
  7343.       case nir_op_fne:
  7344.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fne_xforms); i++) {
  7345.             const struct transform *xform = &nir_opt_algebraic_fne_xforms[i];
  7346.             if (state->condition_flags[xform->condition_offset] &&
  7347.                 nir_replace_instr(alu, xform->search, xform->replace,
  7348.                                   state->mem_ctx)) {
  7349.                state->progress = true;
  7350.                break;
  7351.             }
  7352.          }
  7353.          break;
  7354.       case nir_op_imul:
  7355.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_imul_xforms); i++) {
  7356.             const struct transform *xform = &nir_opt_algebraic_imul_xforms[i];
  7357.             if (state->condition_flags[xform->condition_offset] &&
  7358.                 nir_replace_instr(alu, xform->search, xform->replace,
  7359.                                   state->mem_ctx)) {
  7360.                state->progress = true;
  7361.                break;
  7362.             }
  7363.          }
  7364.          break;
  7365.       case nir_op_uge:
  7366.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_uge_xforms); i++) {
  7367.             const struct transform *xform = &nir_opt_algebraic_uge_xforms[i];
  7368.             if (state->condition_flags[xform->condition_offset] &&
  7369.                 nir_replace_instr(alu, xform->search, xform->replace,
  7370.                                   state->mem_ctx)) {
  7371.                state->progress = true;
  7372.                break;
  7373.             }
  7374.          }
  7375.          break;
  7376.       case nir_op_fmul:
  7377.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fmul_xforms); i++) {
  7378.             const struct transform *xform = &nir_opt_algebraic_fmul_xforms[i];
  7379.             if (state->condition_flags[xform->condition_offset] &&
  7380.                 nir_replace_instr(alu, xform->search, xform->replace,
  7381.                                   state->mem_ctx)) {
  7382.                state->progress = true;
  7383.                break;
  7384.             }
  7385.          }
  7386.          break;
  7387.       case nir_op_ffma:
  7388.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ffma_xforms); i++) {
  7389.             const struct transform *xform = &nir_opt_algebraic_ffma_xforms[i];
  7390.             if (state->condition_flags[xform->condition_offset] &&
  7391.                 nir_replace_instr(alu, xform->search, xform->replace,
  7392.                                   state->mem_ctx)) {
  7393.                state->progress = true;
  7394.                break;
  7395.             }
  7396.          }
  7397.          break;
  7398.       case nir_op_umin:
  7399.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_umin_xforms); i++) {
  7400.             const struct transform *xform = &nir_opt_algebraic_umin_xforms[i];
  7401.             if (state->condition_flags[xform->condition_offset] &&
  7402.                 nir_replace_instr(alu, xform->search, xform->replace,
  7403.                                   state->mem_ctx)) {
  7404.                state->progress = true;
  7405.                break;
  7406.             }
  7407.          }
  7408.          break;
  7409.       case nir_op_umax:
  7410.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_umax_xforms); i++) {
  7411.             const struct transform *xform = &nir_opt_algebraic_umax_xforms[i];
  7412.             if (state->condition_flags[xform->condition_offset] &&
  7413.                 nir_replace_instr(alu, xform->search, xform->replace,
  7414.                                   state->mem_ctx)) {
  7415.                state->progress = true;
  7416.                break;
  7417.             }
  7418.          }
  7419.          break;
  7420.       case nir_op_bcsel:
  7421.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_bcsel_xforms); i++) {
  7422.             const struct transform *xform = &nir_opt_algebraic_bcsel_xforms[i];
  7423.             if (state->condition_flags[xform->condition_offset] &&
  7424.                 nir_replace_instr(alu, xform->search, xform->replace,
  7425.                                   state->mem_ctx)) {
  7426.                state->progress = true;
  7427.                break;
  7428.             }
  7429.          }
  7430.          break;
  7431.       case nir_op_sge:
  7432.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_sge_xforms); i++) {
  7433.             const struct transform *xform = &nir_opt_algebraic_sge_xforms[i];
  7434.             if (state->condition_flags[xform->condition_offset] &&
  7435.                 nir_replace_instr(alu, xform->search, xform->replace,
  7436.                                   state->mem_ctx)) {
  7437.                state->progress = true;
  7438.                break;
  7439.             }
  7440.          }
  7441.          break;
  7442.       case nir_op_fsqrt:
  7443.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fsqrt_xforms); i++) {
  7444.             const struct transform *xform = &nir_opt_algebraic_fsqrt_xforms[i];
  7445.             if (state->condition_flags[xform->condition_offset] &&
  7446.                 nir_replace_instr(alu, xform->search, xform->replace,
  7447.                                   state->mem_ctx)) {
  7448.                state->progress = true;
  7449.                break;
  7450.             }
  7451.          }
  7452.          break;
  7453.       case nir_op_iadd:
  7454.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_iadd_xforms); i++) {
  7455.             const struct transform *xform = &nir_opt_algebraic_iadd_xforms[i];
  7456.             if (state->condition_flags[xform->condition_offset] &&
  7457.                 nir_replace_instr(alu, xform->search, xform->replace,
  7458.                                   state->mem_ctx)) {
  7459.                state->progress = true;
  7460.                break;
  7461.             }
  7462.          }
  7463.          break;
  7464.       case nir_op_fand:
  7465.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fand_xforms); i++) {
  7466.             const struct transform *xform = &nir_opt_algebraic_fand_xforms[i];
  7467.             if (state->condition_flags[xform->condition_offset] &&
  7468.                 nir_replace_instr(alu, xform->search, xform->replace,
  7469.                                   state->mem_ctx)) {
  7470.                state->progress = true;
  7471.                break;
  7472.             }
  7473.          }
  7474.          break;
  7475.       case nir_op_fabs:
  7476.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fabs_xforms); i++) {
  7477.             const struct transform *xform = &nir_opt_algebraic_fabs_xforms[i];
  7478.             if (state->condition_flags[xform->condition_offset] &&
  7479.                 nir_replace_instr(alu, xform->search, xform->replace,
  7480.                                   state->mem_ctx)) {
  7481.                state->progress = true;
  7482.                break;
  7483.             }
  7484.          }
  7485.          break;
  7486.       case nir_op_ieq:
  7487.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ieq_xforms); i++) {
  7488.             const struct transform *xform = &nir_opt_algebraic_ieq_xforms[i];
  7489.             if (state->condition_flags[xform->condition_offset] &&
  7490.                 nir_replace_instr(alu, xform->search, xform->replace,
  7491.                                   state->mem_ctx)) {
  7492.                state->progress = true;
  7493.                break;
  7494.             }
  7495.          }
  7496.          break;
  7497.       case nir_op_imin:
  7498.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_imin_xforms); i++) {
  7499.             const struct transform *xform = &nir_opt_algebraic_imin_xforms[i];
  7500.             if (state->condition_flags[xform->condition_offset] &&
  7501.                 nir_replace_instr(alu, xform->search, xform->replace,
  7502.                                   state->mem_ctx)) {
  7503.                state->progress = true;
  7504.                break;
  7505.             }
  7506.          }
  7507.          break;
  7508.       case nir_op_frsq:
  7509.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_frsq_xforms); i++) {
  7510.             const struct transform *xform = &nir_opt_algebraic_frsq_xforms[i];
  7511.             if (state->condition_flags[xform->condition_offset] &&
  7512.                 nir_replace_instr(alu, xform->search, xform->replace,
  7513.                                   state->mem_ctx)) {
  7514.                state->progress = true;
  7515.                break;
  7516.             }
  7517.          }
  7518.          break;
  7519.       case nir_op_ineg:
  7520.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ineg_xforms); i++) {
  7521.             const struct transform *xform = &nir_opt_algebraic_ineg_xforms[i];
  7522.             if (state->condition_flags[xform->condition_offset] &&
  7523.                 nir_replace_instr(alu, xform->search, xform->replace,
  7524.                                   state->mem_ctx)) {
  7525.                state->progress = true;
  7526.                break;
  7527.             }
  7528.          }
  7529.          break;
  7530.       case nir_op_fpow:
  7531.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fpow_xforms); i++) {
  7532.             const struct transform *xform = &nir_opt_algebraic_fpow_xforms[i];
  7533.             if (state->condition_flags[xform->condition_offset] &&
  7534.                 nir_replace_instr(alu, xform->search, xform->replace,
  7535.                                   state->mem_ctx)) {
  7536.                state->progress = true;
  7537.                break;
  7538.             }
  7539.          }
  7540.          break;
  7541.       case nir_op_ige:
  7542.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ige_xforms); i++) {
  7543.             const struct transform *xform = &nir_opt_algebraic_ige_xforms[i];
  7544.             if (state->condition_flags[xform->condition_offset] &&
  7545.                 nir_replace_instr(alu, xform->search, xform->replace,
  7546.                                   state->mem_ctx)) {
  7547.                state->progress = true;
  7548.                break;
  7549.             }
  7550.          }
  7551.          break;
  7552.       case nir_op_fdiv:
  7553.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fdiv_xforms); i++) {
  7554.             const struct transform *xform = &nir_opt_algebraic_fdiv_xforms[i];
  7555.             if (state->condition_flags[xform->condition_offset] &&
  7556.                 nir_replace_instr(alu, xform->search, xform->replace,
  7557.                                   state->mem_ctx)) {
  7558.                state->progress = true;
  7559.                break;
  7560.             }
  7561.          }
  7562.          break;
  7563.       case nir_op_fadd:
  7564.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fadd_xforms); i++) {
  7565.             const struct transform *xform = &nir_opt_algebraic_fadd_xforms[i];
  7566.             if (state->condition_flags[xform->condition_offset] &&
  7567.                 nir_replace_instr(alu, xform->search, xform->replace,
  7568.                                   state->mem_ctx)) {
  7569.                state->progress = true;
  7570.                break;
  7571.             }
  7572.          }
  7573.          break;
  7574.       case nir_op_ishl:
  7575.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ishl_xforms); i++) {
  7576.             const struct transform *xform = &nir_opt_algebraic_ishl_xforms[i];
  7577.             if (state->condition_flags[xform->condition_offset] &&
  7578.                 nir_replace_instr(alu, xform->search, xform->replace,
  7579.                                   state->mem_ctx)) {
  7580.                state->progress = true;
  7581.                break;
  7582.             }
  7583.          }
  7584.          break;
  7585.       case nir_op_flog2:
  7586.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_flog2_xforms); i++) {
  7587.             const struct transform *xform = &nir_opt_algebraic_flog2_xforms[i];
  7588.             if (state->condition_flags[xform->condition_offset] &&
  7589.                 nir_replace_instr(alu, xform->search, xform->replace,
  7590.                                   state->mem_ctx)) {
  7591.                state->progress = true;
  7592.                break;
  7593.             }
  7594.          }
  7595.          break;
  7596.       case nir_op_inot:
  7597.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_inot_xforms); i++) {
  7598.             const struct transform *xform = &nir_opt_algebraic_inot_xforms[i];
  7599.             if (state->condition_flags[xform->condition_offset] &&
  7600.                 nir_replace_instr(alu, xform->search, xform->replace,
  7601.                                   state->mem_ctx)) {
  7602.                state->progress = true;
  7603.                break;
  7604.             }
  7605.          }
  7606.          break;
  7607.       case nir_op_sne:
  7608.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_sne_xforms); i++) {
  7609.             const struct transform *xform = &nir_opt_algebraic_sne_xforms[i];
  7610.             if (state->condition_flags[xform->condition_offset] &&
  7611.                 nir_replace_instr(alu, xform->search, xform->replace,
  7612.                                   state->mem_ctx)) {
  7613.                state->progress = true;
  7614.                break;
  7615.             }
  7616.          }
  7617.          break;
  7618.       case nir_op_f2u:
  7619.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_f2u_xforms); i++) {
  7620.             const struct transform *xform = &nir_opt_algebraic_f2u_xforms[i];
  7621.             if (state->condition_flags[xform->condition_offset] &&
  7622.                 nir_replace_instr(alu, xform->search, xform->replace,
  7623.                                   state->mem_ctx)) {
  7624.                state->progress = true;
  7625.                break;
  7626.             }
  7627.          }
  7628.          break;
  7629.       case nir_op_fcsel:
  7630.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fcsel_xforms); i++) {
  7631.             const struct transform *xform = &nir_opt_algebraic_fcsel_xforms[i];
  7632.             if (state->condition_flags[xform->condition_offset] &&
  7633.                 nir_replace_instr(alu, xform->search, xform->replace,
  7634.                                   state->mem_ctx)) {
  7635.                state->progress = true;
  7636.                break;
  7637.             }
  7638.          }
  7639.          break;
  7640.       case nir_op_isub:
  7641.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_isub_xforms); i++) {
  7642.             const struct transform *xform = &nir_opt_algebraic_isub_xforms[i];
  7643.             if (state->condition_flags[xform->condition_offset] &&
  7644.                 nir_replace_instr(alu, xform->search, xform->replace,
  7645.                                   state->mem_ctx)) {
  7646.                state->progress = true;
  7647.                break;
  7648.             }
  7649.          }
  7650.          break;
  7651.       case nir_op_fmax:
  7652.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fmax_xforms); i++) {
  7653.             const struct transform *xform = &nir_opt_algebraic_fmax_xforms[i];
  7654.             if (state->condition_flags[xform->condition_offset] &&
  7655.                 nir_replace_instr(alu, xform->search, xform->replace,
  7656.                                   state->mem_ctx)) {
  7657.                state->progress = true;
  7658.                break;
  7659.             }
  7660.          }
  7661.          break;
  7662.       case nir_op_feq:
  7663.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_feq_xforms); i++) {
  7664.             const struct transform *xform = &nir_opt_algebraic_feq_xforms[i];
  7665.             if (state->condition_flags[xform->condition_offset] &&
  7666.                 nir_replace_instr(alu, xform->search, xform->replace,
  7667.                                   state->mem_ctx)) {
  7668.                state->progress = true;
  7669.                break;
  7670.             }
  7671.          }
  7672.          break;
  7673.       case nir_op_flrp:
  7674.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_flrp_xforms); i++) {
  7675.             const struct transform *xform = &nir_opt_algebraic_flrp_xforms[i];
  7676.             if (state->condition_flags[xform->condition_offset] &&
  7677.                 nir_replace_instr(alu, xform->search, xform->replace,
  7678.                                   state->mem_ctx)) {
  7679.                state->progress = true;
  7680.                break;
  7681.             }
  7682.          }
  7683.          break;
  7684.       case nir_op_ior:
  7685.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ior_xforms); i++) {
  7686.             const struct transform *xform = &nir_opt_algebraic_ior_xforms[i];
  7687.             if (state->condition_flags[xform->condition_offset] &&
  7688.                 nir_replace_instr(alu, xform->search, xform->replace,
  7689.                                   state->mem_ctx)) {
  7690.                state->progress = true;
  7691.                break;
  7692.             }
  7693.          }
  7694.          break;
  7695.       case nir_op_imax:
  7696.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_imax_xforms); i++) {
  7697.             const struct transform *xform = &nir_opt_algebraic_imax_xforms[i];
  7698.             if (state->condition_flags[xform->condition_offset] &&
  7699.                 nir_replace_instr(alu, xform->search, xform->replace,
  7700.                                   state->mem_ctx)) {
  7701.                state->progress = true;
  7702.                break;
  7703.             }
  7704.          }
  7705.          break;
  7706.       case nir_op_fsat:
  7707.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fsat_xforms); i++) {
  7708.             const struct transform *xform = &nir_opt_algebraic_fsat_xforms[i];
  7709.             if (state->condition_flags[xform->condition_offset] &&
  7710.                 nir_replace_instr(alu, xform->search, xform->replace,
  7711.                                   state->mem_ctx)) {
  7712.                state->progress = true;
  7713.                break;
  7714.             }
  7715.          }
  7716.          break;
  7717.       case nir_op_fge:
  7718.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fge_xforms); i++) {
  7719.             const struct transform *xform = &nir_opt_algebraic_fge_xforms[i];
  7720.             if (state->condition_flags[xform->condition_offset] &&
  7721.                 nir_replace_instr(alu, xform->search, xform->replace,
  7722.                                   state->mem_ctx)) {
  7723.                state->progress = true;
  7724.                break;
  7725.             }
  7726.          }
  7727.          break;
  7728.       case nir_op_frcp:
  7729.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_frcp_xforms); i++) {
  7730.             const struct transform *xform = &nir_opt_algebraic_frcp_xforms[i];
  7731.             if (state->condition_flags[xform->condition_offset] &&
  7732.                 nir_replace_instr(alu, xform->search, xform->replace,
  7733.                                   state->mem_ctx)) {
  7734.                state->progress = true;
  7735.                break;
  7736.             }
  7737.          }
  7738.          break;
  7739.       case nir_op_fxor:
  7740.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fxor_xforms); i++) {
  7741.             const struct transform *xform = &nir_opt_algebraic_fxor_xforms[i];
  7742.             if (state->condition_flags[xform->condition_offset] &&
  7743.                 nir_replace_instr(alu, xform->search, xform->replace,
  7744.                                   state->mem_ctx)) {
  7745.                state->progress = true;
  7746.                break;
  7747.             }
  7748.          }
  7749.          break;
  7750.       case nir_op_ushr:
  7751.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ushr_xforms); i++) {
  7752.             const struct transform *xform = &nir_opt_algebraic_ushr_xforms[i];
  7753.             if (state->condition_flags[xform->condition_offset] &&
  7754.                 nir_replace_instr(alu, xform->search, xform->replace,
  7755.                                   state->mem_ctx)) {
  7756.                state->progress = true;
  7757.                break;
  7758.             }
  7759.          }
  7760.          break;
  7761.       case nir_op_fexp2:
  7762.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fexp2_xforms); i++) {
  7763.             const struct transform *xform = &nir_opt_algebraic_fexp2_xforms[i];
  7764.             if (state->condition_flags[xform->condition_offset] &&
  7765.                 nir_replace_instr(alu, xform->search, xform->replace,
  7766.                                   state->mem_ctx)) {
  7767.                state->progress = true;
  7768.                break;
  7769.             }
  7770.          }
  7771.          break;
  7772.       case nir_op_ishr:
  7773.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ishr_xforms); i++) {
  7774.             const struct transform *xform = &nir_opt_algebraic_ishr_xforms[i];
  7775.             if (state->condition_flags[xform->condition_offset] &&
  7776.                 nir_replace_instr(alu, xform->search, xform->replace,
  7777.                                   state->mem_ctx)) {
  7778.                state->progress = true;
  7779.                break;
  7780.             }
  7781.          }
  7782.          break;
  7783.       case nir_op_slt:
  7784.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_slt_xforms); i++) {
  7785.             const struct transform *xform = &nir_opt_algebraic_slt_xforms[i];
  7786.             if (state->condition_flags[xform->condition_offset] &&
  7787.                 nir_replace_instr(alu, xform->search, xform->replace,
  7788.                                   state->mem_ctx)) {
  7789.                state->progress = true;
  7790.                break;
  7791.             }
  7792.          }
  7793.          break;
  7794.       case nir_op_f2i:
  7795.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_f2i_xforms); i++) {
  7796.             const struct transform *xform = &nir_opt_algebraic_f2i_xforms[i];
  7797.             if (state->condition_flags[xform->condition_offset] &&
  7798.                 nir_replace_instr(alu, xform->search, xform->replace,
  7799.                                   state->mem_ctx)) {
  7800.                state->progress = true;
  7801.                break;
  7802.             }
  7803.          }
  7804.          break;
  7805.       case nir_op_flt:
  7806.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_flt_xforms); i++) {
  7807.             const struct transform *xform = &nir_opt_algebraic_flt_xforms[i];
  7808.             if (state->condition_flags[xform->condition_offset] &&
  7809.                 nir_replace_instr(alu, xform->search, xform->replace,
  7810.                                   state->mem_ctx)) {
  7811.                state->progress = true;
  7812.                break;
  7813.             }
  7814.          }
  7815.          break;
  7816.       case nir_op_ult:
  7817.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ult_xforms); i++) {
  7818.             const struct transform *xform = &nir_opt_algebraic_ult_xforms[i];
  7819.             if (state->condition_flags[xform->condition_offset] &&
  7820.                 nir_replace_instr(alu, xform->search, xform->replace,
  7821.                                   state->mem_ctx)) {
  7822.                state->progress = true;
  7823.                break;
  7824.             }
  7825.          }
  7826.          break;
  7827.       case nir_op_fsub:
  7828.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fsub_xforms); i++) {
  7829.             const struct transform *xform = &nir_opt_algebraic_fsub_xforms[i];
  7830.             if (state->condition_flags[xform->condition_offset] &&
  7831.                 nir_replace_instr(alu, xform->search, xform->replace,
  7832.                                   state->mem_ctx)) {
  7833.                state->progress = true;
  7834.                break;
  7835.             }
  7836.          }
  7837.          break;
  7838.       case nir_op_fneg:
  7839.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fneg_xforms); i++) {
  7840.             const struct transform *xform = &nir_opt_algebraic_fneg_xforms[i];
  7841.             if (state->condition_flags[xform->condition_offset] &&
  7842.                 nir_replace_instr(alu, xform->search, xform->replace,
  7843.                                   state->mem_ctx)) {
  7844.                state->progress = true;
  7845.                break;
  7846.             }
  7847.          }
  7848.          break;
  7849.       case nir_op_ilt:
  7850.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ilt_xforms); i++) {
  7851.             const struct transform *xform = &nir_opt_algebraic_ilt_xforms[i];
  7852.             if (state->condition_flags[xform->condition_offset] &&
  7853.                 nir_replace_instr(alu, xform->search, xform->replace,
  7854.                                   state->mem_ctx)) {
  7855.                state->progress = true;
  7856.                break;
  7857.             }
  7858.          }
  7859.          break;
  7860.       case nir_op_iabs:
  7861.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_iabs_xforms); i++) {
  7862.             const struct transform *xform = &nir_opt_algebraic_iabs_xforms[i];
  7863.             if (state->condition_flags[xform->condition_offset] &&
  7864.                 nir_replace_instr(alu, xform->search, xform->replace,
  7865.                                   state->mem_ctx)) {
  7866.                state->progress = true;
  7867.                break;
  7868.             }
  7869.          }
  7870.          break;
  7871.       case nir_op_fmin:
  7872.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_fmin_xforms); i++) {
  7873.             const struct transform *xform = &nir_opt_algebraic_fmin_xforms[i];
  7874.             if (state->condition_flags[xform->condition_offset] &&
  7875.                 nir_replace_instr(alu, xform->search, xform->replace,
  7876.                                   state->mem_ctx)) {
  7877.                state->progress = true;
  7878.                break;
  7879.             }
  7880.          }
  7881.          break;
  7882.       case nir_op_ine:
  7883.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_ine_xforms); i++) {
  7884.             const struct transform *xform = &nir_opt_algebraic_ine_xforms[i];
  7885.             if (state->condition_flags[xform->condition_offset] &&
  7886.                 nir_replace_instr(alu, xform->search, xform->replace,
  7887.                                   state->mem_ctx)) {
  7888.                state->progress = true;
  7889.                break;
  7890.             }
  7891.          }
  7892.          break;
  7893.       case nir_op_i2b:
  7894.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_i2b_xforms); i++) {
  7895.             const struct transform *xform = &nir_opt_algebraic_i2b_xforms[i];
  7896.             if (state->condition_flags[xform->condition_offset] &&
  7897.                 nir_replace_instr(alu, xform->search, xform->replace,
  7898.                                   state->mem_ctx)) {
  7899.                state->progress = true;
  7900.                break;
  7901.             }
  7902.          }
  7903.          break;
  7904.       default:
  7905.          break;
  7906.       }
  7907.    }
  7908.  
  7909.    return true;
  7910. }
  7911.  
  7912. static bool
  7913. nir_opt_algebraic_impl(nir_function_impl *impl, const bool *condition_flags)
  7914. {
  7915.    struct opt_state state;
  7916.  
  7917.    state.mem_ctx = ralloc_parent(impl);
  7918.    state.progress = false;
  7919.    state.condition_flags = condition_flags;
  7920.  
  7921.    nir_foreach_block(impl, nir_opt_algebraic_block, &state);
  7922.  
  7923.    if (state.progress)
  7924.       nir_metadata_preserve(impl, nir_metadata_block_index |
  7925.                                   nir_metadata_dominance);
  7926.  
  7927.    return state.progress;
  7928. }
  7929.  
  7930.  
  7931. bool
  7932. nir_opt_algebraic(nir_shader *shader)
  7933. {
  7934.    bool progress = false;
  7935.    bool condition_flags[14];
  7936.    const nir_shader_compiler_options *options = shader->options;
  7937.  
  7938.    condition_flags[0] = true;
  7939.    condition_flags[1] = options->lower_flrp;
  7940.    condition_flags[2] = !options->lower_flrp;
  7941.    condition_flags[3] = options->lower_ffma;
  7942.    condition_flags[4] = !options->lower_ffma;
  7943.    condition_flags[5] = !options->lower_fsat;
  7944.    condition_flags[6] = options->lower_fsat;
  7945.    condition_flags[7] = options->lower_scmp;
  7946.    condition_flags[8] = options->lower_fpow;
  7947.    condition_flags[9] = !options->lower_fpow;
  7948.    condition_flags[10] = options->lower_fsqrt;
  7949.    condition_flags[11] = !options->lower_fsqrt;
  7950.    condition_flags[12] = options->lower_sub;
  7951.    condition_flags[13] = options->lower_negate;
  7952.  
  7953.    nir_foreach_overload(shader, overload) {
  7954.       if (overload->impl)
  7955.          progress |= nir_opt_algebraic_impl(overload->impl, condition_flags);
  7956.    }
  7957.  
  7958.    return progress;
  7959. }
  7960.  
  7961.  
  7962. #include "nir.h"
  7963. #include "nir_search.h"
  7964.  
  7965. #ifndef NIR_OPT_ALGEBRAIC_STRUCT_DEFS
  7966. #define NIR_OPT_ALGEBRAIC_STRUCT_DEFS
  7967.  
  7968. struct transform {
  7969.    const nir_search_expression *search;
  7970.    const nir_search_value *replace;
  7971.    unsigned condition_offset;
  7972. };
  7973.  
  7974. struct opt_state {
  7975.    void *mem_ctx;
  7976.    bool progress;
  7977.    const bool *condition_flags;
  7978. };
  7979.  
  7980. #endif
  7981.  
  7982.    
  7983. static const nir_search_variable search157_0_0 = {
  7984.    { nir_search_value_variable },
  7985.    0, /* a */
  7986.    false,
  7987.    nir_type_invalid,
  7988. };
  7989.  
  7990. static const nir_search_variable search157_0_1 = {
  7991.    { nir_search_value_variable },
  7992.    1, /* b */
  7993.    false,
  7994.    nir_type_invalid,
  7995. };
  7996. static const nir_search_expression search157_0 = {
  7997.    { nir_search_value_expression },
  7998.    nir_op_fadd,
  7999.    { &search157_0_0.value, &search157_0_1.value },
  8000. };
  8001.  
  8002. static const nir_search_constant search157_1 = {
  8003.    { nir_search_value_constant },
  8004.    { 0x0 /* 0.0 */ },
  8005. };
  8006. static const nir_search_expression search157 = {
  8007.    { nir_search_value_expression },
  8008.    nir_op_fge,
  8009.    { &search157_0.value, &search157_1.value },
  8010. };
  8011.    
  8012. static const nir_search_variable replace157_0 = {
  8013.    { nir_search_value_variable },
  8014.    0, /* a */
  8015.    false,
  8016.    nir_type_invalid,
  8017. };
  8018.  
  8019. static const nir_search_variable replace157_1_0 = {
  8020.    { nir_search_value_variable },
  8021.    1, /* b */
  8022.    false,
  8023.    nir_type_invalid,
  8024. };
  8025. static const nir_search_expression replace157_1 = {
  8026.    { nir_search_value_expression },
  8027.    nir_op_fneg,
  8028.    { &replace157_1_0.value },
  8029. };
  8030. static const nir_search_expression replace157 = {
  8031.    { nir_search_value_expression },
  8032.    nir_op_fge,
  8033.    { &replace157_0.value, &replace157_1.value },
  8034. };
  8035.  
  8036. static const struct transform nir_opt_algebraic_late_fge_xforms[] = {
  8037.    { &search157, &replace157.value, 0 },
  8038. };
  8039.    
  8040. static const nir_search_variable search159_0_0 = {
  8041.    { nir_search_value_variable },
  8042.    0, /* a */
  8043.    false,
  8044.    nir_type_invalid,
  8045. };
  8046.  
  8047. static const nir_search_variable search159_0_1 = {
  8048.    { nir_search_value_variable },
  8049.    1, /* b */
  8050.    false,
  8051.    nir_type_invalid,
  8052. };
  8053. static const nir_search_expression search159_0 = {
  8054.    { nir_search_value_expression },
  8055.    nir_op_fadd,
  8056.    { &search159_0_0.value, &search159_0_1.value },
  8057. };
  8058.  
  8059. static const nir_search_constant search159_1 = {
  8060.    { nir_search_value_constant },
  8061.    { 0x0 /* 0.0 */ },
  8062. };
  8063. static const nir_search_expression search159 = {
  8064.    { nir_search_value_expression },
  8065.    nir_op_fne,
  8066.    { &search159_0.value, &search159_1.value },
  8067. };
  8068.    
  8069. static const nir_search_variable replace159_0 = {
  8070.    { nir_search_value_variable },
  8071.    0, /* a */
  8072.    false,
  8073.    nir_type_invalid,
  8074. };
  8075.  
  8076. static const nir_search_variable replace159_1_0 = {
  8077.    { nir_search_value_variable },
  8078.    1, /* b */
  8079.    false,
  8080.    nir_type_invalid,
  8081. };
  8082. static const nir_search_expression replace159_1 = {
  8083.    { nir_search_value_expression },
  8084.    nir_op_fneg,
  8085.    { &replace159_1_0.value },
  8086. };
  8087. static const nir_search_expression replace159 = {
  8088.    { nir_search_value_expression },
  8089.    nir_op_fne,
  8090.    { &replace159_0.value, &replace159_1.value },
  8091. };
  8092.  
  8093. static const struct transform nir_opt_algebraic_late_fne_xforms[] = {
  8094.    { &search159, &replace159.value, 0 },
  8095. };
  8096.    
  8097. static const nir_search_variable search156_0_0 = {
  8098.    { nir_search_value_variable },
  8099.    0, /* a */
  8100.    false,
  8101.    nir_type_invalid,
  8102. };
  8103.  
  8104. static const nir_search_variable search156_0_1 = {
  8105.    { nir_search_value_variable },
  8106.    1, /* b */
  8107.    false,
  8108.    nir_type_invalid,
  8109. };
  8110. static const nir_search_expression search156_0 = {
  8111.    { nir_search_value_expression },
  8112.    nir_op_fadd,
  8113.    { &search156_0_0.value, &search156_0_1.value },
  8114. };
  8115.  
  8116. static const nir_search_constant search156_1 = {
  8117.    { nir_search_value_constant },
  8118.    { 0x0 /* 0.0 */ },
  8119. };
  8120. static const nir_search_expression search156 = {
  8121.    { nir_search_value_expression },
  8122.    nir_op_flt,
  8123.    { &search156_0.value, &search156_1.value },
  8124. };
  8125.    
  8126. static const nir_search_variable replace156_0 = {
  8127.    { nir_search_value_variable },
  8128.    0, /* a */
  8129.    false,
  8130.    nir_type_invalid,
  8131. };
  8132.  
  8133. static const nir_search_variable replace156_1_0 = {
  8134.    { nir_search_value_variable },
  8135.    1, /* b */
  8136.    false,
  8137.    nir_type_invalid,
  8138. };
  8139. static const nir_search_expression replace156_1 = {
  8140.    { nir_search_value_expression },
  8141.    nir_op_fneg,
  8142.    { &replace156_1_0.value },
  8143. };
  8144. static const nir_search_expression replace156 = {
  8145.    { nir_search_value_expression },
  8146.    nir_op_flt,
  8147.    { &replace156_0.value, &replace156_1.value },
  8148. };
  8149.  
  8150. static const struct transform nir_opt_algebraic_late_flt_xforms[] = {
  8151.    { &search156, &replace156.value, 0 },
  8152. };
  8153.    
  8154. static const nir_search_variable search158_0_0 = {
  8155.    { nir_search_value_variable },
  8156.    0, /* a */
  8157.    false,
  8158.    nir_type_invalid,
  8159. };
  8160.  
  8161. static const nir_search_variable search158_0_1 = {
  8162.    { nir_search_value_variable },
  8163.    1, /* b */
  8164.    false,
  8165.    nir_type_invalid,
  8166. };
  8167. static const nir_search_expression search158_0 = {
  8168.    { nir_search_value_expression },
  8169.    nir_op_fadd,
  8170.    { &search158_0_0.value, &search158_0_1.value },
  8171. };
  8172.  
  8173. static const nir_search_constant search158_1 = {
  8174.    { nir_search_value_constant },
  8175.    { 0x0 /* 0.0 */ },
  8176. };
  8177. static const nir_search_expression search158 = {
  8178.    { nir_search_value_expression },
  8179.    nir_op_feq,
  8180.    { &search158_0.value, &search158_1.value },
  8181. };
  8182.    
  8183. static const nir_search_variable replace158_0 = {
  8184.    { nir_search_value_variable },
  8185.    0, /* a */
  8186.    false,
  8187.    nir_type_invalid,
  8188. };
  8189.  
  8190. static const nir_search_variable replace158_1_0 = {
  8191.    { nir_search_value_variable },
  8192.    1, /* b */
  8193.    false,
  8194.    nir_type_invalid,
  8195. };
  8196. static const nir_search_expression replace158_1 = {
  8197.    { nir_search_value_expression },
  8198.    nir_op_fneg,
  8199.    { &replace158_1_0.value },
  8200. };
  8201. static const nir_search_expression replace158 = {
  8202.    { nir_search_value_expression },
  8203.    nir_op_feq,
  8204.    { &replace158_0.value, &replace158_1.value },
  8205. };
  8206.  
  8207. static const struct transform nir_opt_algebraic_late_feq_xforms[] = {
  8208.    { &search158, &replace158.value, 0 },
  8209. };
  8210.  
  8211. static bool
  8212. nir_opt_algebraic_late_block(nir_block *block, void *void_state)
  8213. {
  8214.    struct opt_state *state = void_state;
  8215.  
  8216.    nir_foreach_instr_safe(block, instr) {
  8217.       if (instr->type != nir_instr_type_alu)
  8218.          continue;
  8219.  
  8220.       nir_alu_instr *alu = nir_instr_as_alu(instr);
  8221.       if (!alu->dest.dest.is_ssa)
  8222.          continue;
  8223.  
  8224.       switch (alu->op) {
  8225.       case nir_op_fge:
  8226.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_late_fge_xforms); i++) {
  8227.             const struct transform *xform = &nir_opt_algebraic_late_fge_xforms[i];
  8228.             if (state->condition_flags[xform->condition_offset] &&
  8229.                 nir_replace_instr(alu, xform->search, xform->replace,
  8230.                                   state->mem_ctx)) {
  8231.                state->progress = true;
  8232.                break;
  8233.             }
  8234.          }
  8235.          break;
  8236.       case nir_op_fne:
  8237.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_late_fne_xforms); i++) {
  8238.             const struct transform *xform = &nir_opt_algebraic_late_fne_xforms[i];
  8239.             if (state->condition_flags[xform->condition_offset] &&
  8240.                 nir_replace_instr(alu, xform->search, xform->replace,
  8241.                                   state->mem_ctx)) {
  8242.                state->progress = true;
  8243.                break;
  8244.             }
  8245.          }
  8246.          break;
  8247.       case nir_op_flt:
  8248.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_late_flt_xforms); i++) {
  8249.             const struct transform *xform = &nir_opt_algebraic_late_flt_xforms[i];
  8250.             if (state->condition_flags[xform->condition_offset] &&
  8251.                 nir_replace_instr(alu, xform->search, xform->replace,
  8252.                                   state->mem_ctx)) {
  8253.                state->progress = true;
  8254.                break;
  8255.             }
  8256.          }
  8257.          break;
  8258.       case nir_op_feq:
  8259.          for (unsigned i = 0; i < ARRAY_SIZE(nir_opt_algebraic_late_feq_xforms); i++) {
  8260.             const struct transform *xform = &nir_opt_algebraic_late_feq_xforms[i];
  8261.             if (state->condition_flags[xform->condition_offset] &&
  8262.                 nir_replace_instr(alu, xform->search, xform->replace,
  8263.                                   state->mem_ctx)) {
  8264.                state->progress = true;
  8265.                break;
  8266.             }
  8267.          }
  8268.          break;
  8269.       default:
  8270.          break;
  8271.       }
  8272.    }
  8273.  
  8274.    return true;
  8275. }
  8276.  
  8277. static bool
  8278. nir_opt_algebraic_late_impl(nir_function_impl *impl, const bool *condition_flags)
  8279. {
  8280.    struct opt_state state;
  8281.  
  8282.    state.mem_ctx = ralloc_parent(impl);
  8283.    state.progress = false;
  8284.    state.condition_flags = condition_flags;
  8285.  
  8286.    nir_foreach_block(impl, nir_opt_algebraic_late_block, &state);
  8287.  
  8288.    if (state.progress)
  8289.       nir_metadata_preserve(impl, nir_metadata_block_index |
  8290.                                   nir_metadata_dominance);
  8291.  
  8292.    return state.progress;
  8293. }
  8294.  
  8295.  
  8296. bool
  8297. nir_opt_algebraic_late(nir_shader *shader)
  8298. {
  8299.    bool progress = false;
  8300.    bool condition_flags[14];
  8301.    const nir_shader_compiler_options *options = shader->options;
  8302.  
  8303.    condition_flags[0] = true;
  8304.    condition_flags[1] = options->lower_flrp;
  8305.    condition_flags[2] = !options->lower_flrp;
  8306.    condition_flags[3] = options->lower_ffma;
  8307.    condition_flags[4] = !options->lower_ffma;
  8308.    condition_flags[5] = !options->lower_fsat;
  8309.    condition_flags[6] = options->lower_fsat;
  8310.    condition_flags[7] = options->lower_scmp;
  8311.    condition_flags[8] = options->lower_fpow;
  8312.    condition_flags[9] = !options->lower_fpow;
  8313.    condition_flags[10] = options->lower_fsqrt;
  8314.    condition_flags[11] = !options->lower_fsqrt;
  8315.    condition_flags[12] = options->lower_sub;
  8316.    condition_flags[13] = options->lower_negate;
  8317.  
  8318.    nir_foreach_overload(shader, overload) {
  8319.       if (overload->impl)
  8320.          progress |= nir_opt_algebraic_late_impl(overload->impl, condition_flags);
  8321.    }
  8322.  
  8323.    return progress;
  8324. }
  8325.  
  8326.