"Fossies" - the Fresh Open Source Software Archive

Member "mesa-20.1.8/src/freedreno/ir3/ir3_nir_imul.py" (16 Sep 2020, 2108 Bytes) of package /linux/misc/mesa-20.1.8.tar.xz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Python source code syntax highlighting (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. For more information about "ir3_nir_imul.py" see the Fossies "Dox" file reference documentation.

    1 #
    2 # Copyright (C) 2019 Igalia S.L.
    3 #
    4 # Permission is hereby granted, free of charge, to any person obtaining a
    5 # copy of this software and associated documentation files (the "Software"),
    6 # to deal in the Software without restriction, including without limitation
    7 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
    8 # and/or sell copies of the Software, and to permit persons to whom the
    9 # Software is furnished to do so, subject to the following conditions:
   10 #
   11 # The above copyright notice and this permission notice (including the next
   12 # paragraph) shall be included in all copies or substantial portions of the
   13 # Software.
   14 #
   15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
   16 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
   17 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
   18 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
   19 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   20 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
   21 # IN THE SOFTWARE.
   22 
   23 from __future__ import print_function
   24 
   25 import argparse
   26 import sys
   27 
   28 imul_lowering = [
   29     (('imul', 'a@32', 'b@32'), ('imadsh_mix16', 'b', 'a', ('imadsh_mix16', 'a', 'b', ('umul_low', 'a', 'b')))),
   30         # We want to run the imad24 rule late so that it doesn't fight
   31         # with constant folding the (imul24, a, b).  Since this pass is
   32         # run late, and this is kinda imul related, this seems like a
   33         # good place for it:
   34         (('iadd', ('imul24', 'a', 'b'), 'c'), ('imad24_ir3', 'a', 'b', 'c')),
   35 ]
   36 
   37 
   38 def main():
   39     parser = argparse.ArgumentParser()
   40     parser.add_argument('-p', '--import-path', required=True)
   41     args = parser.parse_args()
   42     sys.path.insert(0, args.import_path)
   43     run()
   44 
   45 
   46 def run():
   47     import nir_algebraic  # pylint: disable=import-error
   48 
   49     print('#include "ir3_nir.h"')
   50     print(nir_algebraic.AlgebraicPass("ir3_nir_lower_imul",
   51                                       imul_lowering).render())
   52 
   53 
   54 if __name__ == '__main__':
   55     main()