From fddcb66edc73cccc6fbb046ffb463d55b565b0fe Mon Sep 17 00:00:00 2001 From: Muxianesty Date: Sat, 17 Aug 2024 20:24:19 +0300 Subject: [PATCH] DFCIR unit tests (similar to DFCxx-ones) were added. --- test/CMakeLists.txt | 1 + test/data/addconst.mlir | 10 + test/data/idct.mlir | 1254 ++++++++++++++++++++++++++++++ test/data/matrixmul2.mlir | 32 + test/data/movingsum.mlir | 11 + test/data/muxmul.mlir | 13 + test/data/polynomial2.mlir | 10 + test/data/scalar3.mlir | 17 + test/model/CMakeLists.txt | 2 + test/model/dfcir/CMakeLists.txt | 10 + test/model/dfcir/addconst.cpp | 39 + test/model/dfcir/idct.cpp | 39 + test/model/dfcir/matrixmul2.cpp | 39 + test/model/dfcir/movingsum.cpp | 39 + test/model/dfcir/muxmul.cpp | 39 + test/model/dfcir/polynomial2.cpp | 39 + test/model/dfcir/scalar3.cpp | 39 + 17 files changed, 1633 insertions(+) create mode 100644 test/data/addconst.mlir create mode 100644 test/data/idct.mlir create mode 100644 test/data/matrixmul2.mlir create mode 100644 test/data/movingsum.mlir create mode 100644 test/data/muxmul.mlir create mode 100644 test/data/polynomial2.mlir create mode 100644 test/data/scalar3.mlir create mode 100644 test/model/dfcir/CMakeLists.txt create mode 100644 test/model/dfcir/addconst.cpp create mode 100644 test/model/dfcir/idct.cpp create mode 100644 test/model/dfcir/matrixmul2.cpp create mode 100644 test/model/dfcir/movingsum.cpp create mode 100644 test/model/dfcir/muxmul.cpp create mode 100644 test/model/dfcir/polynomial2.cpp create mode 100644 test/model/dfcir/scalar3.cpp diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2f9d2df..2e8c46e 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -39,6 +39,7 @@ endif() target_compile_definitions(utest PUBLIC NULLDEVICE="${NULLDEVICE}" + DATA_PATH="${CMAKE_CURRENT_SOURCE_DIR}/data" ) target_include_directories(utest diff --git a/test/data/addconst.mlir b/test/data/addconst.mlir new file mode 100644 index 0000000..a31dc45 --- /dev/null +++ b/test/data/addconst.mlir @@ -0,0 +1,10 @@ +module { + dfcir.kernel "AddConst" { + %0 = dfcir.constant> 5 : ui32 + %1 = dfcir.input> ("x") + %2 = dfcir.add(%1 : !dfcir.stream>, %0 : !dfcir.const>) : !dfcir.stream> + %3 = dfcir.add(%2 : !dfcir.stream>, %1 : !dfcir.stream>) : !dfcir.stream> + %4 = dfcir.output> ("out") {operandSegmentSizes = array} + dfcir.connect(%4 : !dfcir.stream>, %3 : !dfcir.stream>) + } +} diff --git a/test/data/idct.mlir b/test/data/idct.mlir new file mode 100644 index 0000000..5187405 --- /dev/null +++ b/test/data/idct.mlir @@ -0,0 +1,1254 @@ +module { + dfcir.kernel "IDCT" { + %0 = dfcir.input> ("x63") + %1 = dfcir.input> ("x62") + %2 = dfcir.input> ("x61") + %3 = dfcir.input> ("x60") + %4 = dfcir.shl(%3 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %5 = dfcir.input> ("x58") + %6 = dfcir.add(%5 : !dfcir.stream>, %1 : !dfcir.stream>) : !dfcir.stream> + %7 = dfcir.input> ("x57") + %8 = dfcir.add(%7 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %9 = dfcir.input> ("x56") + %10 = dfcir.shl(%9 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %11 = dfcir.input> ("x55") + %12 = dfcir.input> ("x54") + %13 = dfcir.input> ("x18") + %14 = dfcir.constant> 1108 : si32 + %15 = dfcir.mul(%6 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %16 = dfcir.input> ("x39") + %17 = dfcir.input> ("x38") + %18 = dfcir.input> ("x53") + %19 = dfcir.input> ("x16") + %20 = dfcir.shl(%19 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %21 = dfcir.input> ("x26") + %22 = dfcir.input> ("x25") + %23 = dfcir.input> ("x24") + %24 = dfcir.shl(%23 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %25 = dfcir.input> ("x23") + %26 = dfcir.input> ("x12") + %27 = dfcir.shl(%26 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %28 = dfcir.input> ("x22") + %29 = dfcir.add(%13 : !dfcir.stream>, %28 : !dfcir.stream>) : !dfcir.stream> + %30 = dfcir.mul(%29 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %31 = dfcir.input> ("x52") + %32 = dfcir.shl(%31 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %33 = dfcir.input> ("x15") + %34 = dfcir.input> ("x9") + %35 = dfcir.add(%34 : !dfcir.stream>, %33 : !dfcir.stream>) : !dfcir.stream> + %36 = dfcir.input> ("x49") + %37 = dfcir.add(%36 : !dfcir.stream>, %11 : !dfcir.stream>) : !dfcir.stream> + %38 = dfcir.input> ("x32") + %39 = dfcir.shl(%38 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %40 = dfcir.input> ("x34") + %41 = dfcir.add(%40 : !dfcir.stream>, %17 : !dfcir.stream>) : !dfcir.stream> + %42 = dfcir.mul(%41 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %43 = dfcir.input> ("x6") + %44 = dfcir.input> ("x51") + %45 = dfcir.add(%18 : !dfcir.stream>, %44 : !dfcir.stream>) : !dfcir.stream> + %46 = dfcir.input> ("x14") + %47 = dfcir.input> ("x4") + %48 = dfcir.shl(%47 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %49 = dfcir.input> ("x59") + %50 = dfcir.add(%2 : !dfcir.stream>, %49 : !dfcir.stream>) : !dfcir.stream> + %51 = dfcir.input> ("x1") + %52 = dfcir.input> ("x5") + %53 = dfcir.constant> 1609 : si32 + %54 = dfcir.input> ("x7") + %55 = dfcir.add(%51 : !dfcir.stream>, %54 : !dfcir.stream>) : !dfcir.stream> + %56 = dfcir.input> ("x11") + %57 = dfcir.input> ("x17") + %58 = dfcir.add(%57 : !dfcir.stream>, %25 : !dfcir.stream>) : !dfcir.stream> + %59 = dfcir.constant> 2676 : si32 + %60 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %61 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %62 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %63 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %64 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %65 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %66 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %67 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %68 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %69 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %70 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %71 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %72 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %73 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %74 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %75 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %76 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %77 = dfcir.mul(%76 : !dfcir.const>, %5 : !dfcir.stream>) : !dfcir.stream> + %78 = dfcir.add(%15 : !dfcir.stream>, %77 : !dfcir.stream>) : !dfcir.stream> + %79 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %80 = dfcir.mul(%79 : !dfcir.const>, %1 : !dfcir.stream>) : !dfcir.stream> + %81 = dfcir.sub(%15 : !dfcir.stream>, %80 : !dfcir.stream>) : !dfcir.stream> + %82 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %83 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %84 = dfcir.mul(%83 : !dfcir.const>, %12 : !dfcir.stream>) : !dfcir.stream> + %85 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %86 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %87 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %88 = dfcir.mul(%87 : !dfcir.const>, %40 : !dfcir.stream>) : !dfcir.stream> + %89 = dfcir.add(%42 : !dfcir.stream>, %88 : !dfcir.stream>) : !dfcir.stream> + %90 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %91 = dfcir.mul(%90 : !dfcir.const>, %17 : !dfcir.stream>) : !dfcir.stream> + %92 = dfcir.sub(%42 : !dfcir.stream>, %91 : !dfcir.stream>) : !dfcir.stream> + %93 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %94 = dfcir.mul(%93 : !dfcir.const>, %21 : !dfcir.stream>) : !dfcir.stream> + %95 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %96 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %97 = dfcir.mul(%96 : !dfcir.const>, %13 : !dfcir.stream>) : !dfcir.stream> + %98 = dfcir.add(%30 : !dfcir.stream>, %97 : !dfcir.stream>) : !dfcir.stream> + %99 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %100 = dfcir.mul(%99 : !dfcir.const>, %28 : !dfcir.stream>) : !dfcir.stream> + %101 = dfcir.sub(%30 : !dfcir.stream>, %100 : !dfcir.stream>) : !dfcir.stream> + %102 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %103 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %104 = dfcir.mul(%103 : !dfcir.const>, %46 : !dfcir.stream>) : !dfcir.stream> + %105 = dfcir.sub(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %106 = dfcir.add(%59 : !dfcir.const>, %14 : !dfcir.const>) : !dfcir.const> + %107 = dfcir.mul(%106 : !dfcir.const>, %43 : !dfcir.stream>) : !dfcir.stream> + %108 = dfcir.input> ("x21") + %109 = dfcir.constant> 8192 : si32 + %110 = dfcir.input> ("x37") + %111 = dfcir.constant> 181 : si32 + %112 = dfcir.input> ("x31") + %113 = dfcir.add(%22 : !dfcir.stream>, %112 : !dfcir.stream>) : !dfcir.stream> + %114 = dfcir.input> ("x48") + %115 = dfcir.shl(%114 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %116 = dfcir.constant> 565 : si32 + %117 = dfcir.mul(%8 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %118 = dfcir.mul(%37 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %119 = dfcir.mul(%113 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %120 = dfcir.mul(%58 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %121 = dfcir.mul(%35 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %122 = dfcir.mul(%55 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %123 = dfcir.input> ("x8") + %124 = dfcir.shl(%123 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %125 = dfcir.input> ("x10") + %126 = dfcir.mul(%102 : !dfcir.const>, %125 : !dfcir.stream>) : !dfcir.stream> + %127 = dfcir.add(%125 : !dfcir.stream>, %46 : !dfcir.stream>) : !dfcir.stream> + %128 = dfcir.mul(%127 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %129 = dfcir.add(%128 : !dfcir.stream>, %126 : !dfcir.stream>) : !dfcir.stream> + %130 = dfcir.sub(%128 : !dfcir.stream>, %104 : !dfcir.stream>) : !dfcir.stream> + %131 = dfcir.input> ("x20") + %132 = dfcir.shl(%131 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %133 = dfcir.input> ("x2") + %134 = dfcir.mul(%105 : !dfcir.const>, %133 : !dfcir.stream>) : !dfcir.stream> + %135 = dfcir.add(%133 : !dfcir.stream>, %43 : !dfcir.stream>) : !dfcir.stream> + %136 = dfcir.mul(%135 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %137 = dfcir.add(%136 : !dfcir.stream>, %134 : !dfcir.stream>) : !dfcir.stream> + %138 = dfcir.sub(%136 : !dfcir.stream>, %107 : !dfcir.stream>) : !dfcir.stream> + %139 = dfcir.input> ("x27") + %140 = dfcir.input> ("x3") + %141 = dfcir.add(%52 : !dfcir.stream>, %140 : !dfcir.stream>) : !dfcir.stream> + %142 = dfcir.input> ("x50") + %143 = dfcir.mul(%82 : !dfcir.const>, %142 : !dfcir.stream>) : !dfcir.stream> + %144 = dfcir.add(%142 : !dfcir.stream>, %12 : !dfcir.stream>) : !dfcir.stream> + %145 = dfcir.mul(%144 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %146 = dfcir.add(%145 : !dfcir.stream>, %143 : !dfcir.stream>) : !dfcir.stream> + %147 = dfcir.sub(%145 : !dfcir.stream>, %84 : !dfcir.stream>) : !dfcir.stream> + %148 = dfcir.input> ("x13") + %149 = dfcir.add(%148 : !dfcir.stream>, %56 : !dfcir.stream>) : !dfcir.stream> + %150 = dfcir.constant> 2841 : si32 + %151 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %152 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %153 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %154 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %155 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %156 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %157 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %158 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %159 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %160 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %161 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %162 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %163 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %164 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %165 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %166 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %167 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %168 = dfcir.mul(%167 : !dfcir.const>, %0 : !dfcir.stream>) : !dfcir.stream> + %169 = dfcir.sub(%117 : !dfcir.stream>, %168 : !dfcir.stream>) : !dfcir.stream> + %170 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %171 = dfcir.mul(%170 : !dfcir.const>, %7 : !dfcir.stream>) : !dfcir.stream> + %172 = dfcir.add(%117 : !dfcir.stream>, %171 : !dfcir.stream>) : !dfcir.stream> + %173 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %174 = dfcir.mul(%173 : !dfcir.const>, %11 : !dfcir.stream>) : !dfcir.stream> + %175 = dfcir.sub(%118 : !dfcir.stream>, %174 : !dfcir.stream>) : !dfcir.stream> + %176 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %177 = dfcir.mul(%176 : !dfcir.const>, %36 : !dfcir.stream>) : !dfcir.stream> + %178 = dfcir.add(%118 : !dfcir.stream>, %177 : !dfcir.stream>) : !dfcir.stream> + %179 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %180 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %181 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %182 = dfcir.mul(%181 : !dfcir.const>, %16 : !dfcir.stream>) : !dfcir.stream> + %183 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %184 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %185 = dfcir.mul(%184 : !dfcir.const>, %112 : !dfcir.stream>) : !dfcir.stream> + %186 = dfcir.sub(%119 : !dfcir.stream>, %185 : !dfcir.stream>) : !dfcir.stream> + %187 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %188 = dfcir.mul(%187 : !dfcir.const>, %22 : !dfcir.stream>) : !dfcir.stream> + %189 = dfcir.add(%119 : !dfcir.stream>, %188 : !dfcir.stream>) : !dfcir.stream> + %190 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %191 = dfcir.mul(%190 : !dfcir.const>, %25 : !dfcir.stream>) : !dfcir.stream> + %192 = dfcir.sub(%120 : !dfcir.stream>, %191 : !dfcir.stream>) : !dfcir.stream> + %193 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %194 = dfcir.mul(%193 : !dfcir.const>, %57 : !dfcir.stream>) : !dfcir.stream> + %195 = dfcir.add(%120 : !dfcir.stream>, %194 : !dfcir.stream>) : !dfcir.stream> + %196 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %197 = dfcir.mul(%196 : !dfcir.const>, %33 : !dfcir.stream>) : !dfcir.stream> + %198 = dfcir.sub(%121 : !dfcir.stream>, %197 : !dfcir.stream>) : !dfcir.stream> + %199 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %200 = dfcir.mul(%199 : !dfcir.const>, %34 : !dfcir.stream>) : !dfcir.stream> + %201 = dfcir.add(%121 : !dfcir.stream>, %200 : !dfcir.stream>) : !dfcir.stream> + %202 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %203 = dfcir.mul(%202 : !dfcir.const>, %54 : !dfcir.stream>) : !dfcir.stream> + %204 = dfcir.sub(%122 : !dfcir.stream>, %203 : !dfcir.stream>) : !dfcir.stream> + %205 = dfcir.sub(%150 : !dfcir.const>, %116 : !dfcir.const>) : !dfcir.const> + %206 = dfcir.mul(%205 : !dfcir.const>, %51 : !dfcir.stream>) : !dfcir.stream> + %207 = dfcir.add(%122 : !dfcir.stream>, %206 : !dfcir.stream>) : !dfcir.stream> + %208 = dfcir.constant> 128 : si32 + %209 = dfcir.add(%10 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %210 = dfcir.sub(%209 : !dfcir.stream>, %4 : !dfcir.stream>) : !dfcir.stream> + %211 = dfcir.sub(%210 : !dfcir.stream>, %81 : !dfcir.stream>) : !dfcir.stream> + %212 = dfcir.add(%210 : !dfcir.stream>, %81 : !dfcir.stream>) : !dfcir.stream> + %213 = dfcir.add(%209 : !dfcir.stream>, %4 : !dfcir.stream>) : !dfcir.stream> + %214 = dfcir.sub(%213 : !dfcir.stream>, %78 : !dfcir.stream>) : !dfcir.stream> + %215 = dfcir.add(%213 : !dfcir.stream>, %78 : !dfcir.stream>) : !dfcir.stream> + %216 = dfcir.add(%115 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %217 = dfcir.sub(%216 : !dfcir.stream>, %32 : !dfcir.stream>) : !dfcir.stream> + %218 = dfcir.sub(%217 : !dfcir.stream>, %147 : !dfcir.stream>) : !dfcir.stream> + %219 = dfcir.add(%217 : !dfcir.stream>, %147 : !dfcir.stream>) : !dfcir.stream> + %220 = dfcir.add(%216 : !dfcir.stream>, %32 : !dfcir.stream>) : !dfcir.stream> + %221 = dfcir.sub(%220 : !dfcir.stream>, %146 : !dfcir.stream>) : !dfcir.stream> + %222 = dfcir.add(%220 : !dfcir.stream>, %146 : !dfcir.stream>) : !dfcir.stream> + %223 = dfcir.add(%39 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %224 = dfcir.add(%24 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %225 = dfcir.add(%20 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %226 = dfcir.sub(%225 : !dfcir.stream>, %132 : !dfcir.stream>) : !dfcir.stream> + %227 = dfcir.sub(%226 : !dfcir.stream>, %101 : !dfcir.stream>) : !dfcir.stream> + %228 = dfcir.add(%226 : !dfcir.stream>, %101 : !dfcir.stream>) : !dfcir.stream> + %229 = dfcir.add(%225 : !dfcir.stream>, %132 : !dfcir.stream>) : !dfcir.stream> + %230 = dfcir.sub(%229 : !dfcir.stream>, %98 : !dfcir.stream>) : !dfcir.stream> + %231 = dfcir.add(%229 : !dfcir.stream>, %98 : !dfcir.stream>) : !dfcir.stream> + %232 = dfcir.add(%124 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %233 = dfcir.sub(%232 : !dfcir.stream>, %27 : !dfcir.stream>) : !dfcir.stream> + %234 = dfcir.sub(%233 : !dfcir.stream>, %130 : !dfcir.stream>) : !dfcir.stream> + %235 = dfcir.add(%233 : !dfcir.stream>, %130 : !dfcir.stream>) : !dfcir.stream> + %236 = dfcir.add(%232 : !dfcir.stream>, %27 : !dfcir.stream>) : !dfcir.stream> + %237 = dfcir.sub(%236 : !dfcir.stream>, %129 : !dfcir.stream>) : !dfcir.stream> + %238 = dfcir.add(%236 : !dfcir.stream>, %129 : !dfcir.stream>) : !dfcir.stream> + %239 = dfcir.constant> 4 : si32 + %240 = dfcir.input> ("x28") + %241 = dfcir.shl(%240 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %242 = dfcir.sub(%224 : !dfcir.stream>, %241 : !dfcir.stream>) : !dfcir.stream> + %243 = dfcir.add(%224 : !dfcir.stream>, %241 : !dfcir.stream>) : !dfcir.stream> + %244 = dfcir.input> ("x0") + %245 = dfcir.shl(%244 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %246 = dfcir.add(%245 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %247 = dfcir.sub(%246 : !dfcir.stream>, %48 : !dfcir.stream>) : !dfcir.stream> + %248 = dfcir.sub(%247 : !dfcir.stream>, %138 : !dfcir.stream>) : !dfcir.stream> + %249 = dfcir.add(%247 : !dfcir.stream>, %138 : !dfcir.stream>) : !dfcir.stream> + %250 = dfcir.add(%246 : !dfcir.stream>, %48 : !dfcir.stream>) : !dfcir.stream> + %251 = dfcir.sub(%250 : !dfcir.stream>, %137 : !dfcir.stream>) : !dfcir.stream> + %252 = dfcir.add(%250 : !dfcir.stream>, %137 : !dfcir.stream>) : !dfcir.stream> + %253 = dfcir.input> ("x33") + %254 = dfcir.mul(%183 : !dfcir.const>, %253 : !dfcir.stream>) : !dfcir.stream> + %255 = dfcir.add(%253 : !dfcir.stream>, %16 : !dfcir.stream>) : !dfcir.stream> + %256 = dfcir.mul(%255 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %257 = dfcir.sub(%256 : !dfcir.stream>, %182 : !dfcir.stream>) : !dfcir.stream> + %258 = dfcir.add(%256 : !dfcir.stream>, %254 : !dfcir.stream>) : !dfcir.stream> + %259 = dfcir.input> ("x19") + %260 = dfcir.add(%108 : !dfcir.stream>, %259 : !dfcir.stream>) : !dfcir.stream> + %261 = dfcir.input> ("x40") + %262 = dfcir.shl(%261 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %263 = dfcir.add(%262 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %264 = dfcir.input> ("x29") + %265 = dfcir.add(%264 : !dfcir.stream>, %139 : !dfcir.stream>) : !dfcir.stream> + %266 = dfcir.constant> 2408 : si32 + %267 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %268 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %269 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %270 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %271 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %272 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %273 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %274 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %275 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %276 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %277 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %278 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %279 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %280 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %281 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %282 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %283 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %284 = dfcir.mul(%283 : !dfcir.const>, %49 : !dfcir.stream>) : !dfcir.stream> + %285 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %286 = dfcir.mul(%285 : !dfcir.const>, %2 : !dfcir.stream>) : !dfcir.stream> + %287 = dfcir.mul(%266 : !dfcir.const>, %50 : !dfcir.stream>) : !dfcir.stream> + %288 = dfcir.sub(%287 : !dfcir.stream>, %284 : !dfcir.stream>) : !dfcir.stream> + %289 = dfcir.sub(%169 : !dfcir.stream>, %288 : !dfcir.stream>) : !dfcir.stream> + %290 = dfcir.add(%169 : !dfcir.stream>, %288 : !dfcir.stream>) : !dfcir.stream> + %291 = dfcir.sub(%214 : !dfcir.stream>, %290 : !dfcir.stream>) : !dfcir.stream> + %292 = dfcir.shr(%291 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %293 = dfcir.mul(%157 : !dfcir.const>, %292 : !dfcir.stream>) : !dfcir.stream> + %294 = dfcir.add(%214 : !dfcir.stream>, %290 : !dfcir.stream>) : !dfcir.stream> + %295 = dfcir.shr(%294 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %296 = dfcir.mul(%159 : !dfcir.const>, %295 : !dfcir.stream>) : !dfcir.stream> + %297 = dfcir.sub(%287 : !dfcir.stream>, %286 : !dfcir.stream>) : !dfcir.stream> + %298 = dfcir.sub(%172 : !dfcir.stream>, %297 : !dfcir.stream>) : !dfcir.stream> + %299 = dfcir.sub(%298 : !dfcir.stream>, %289 : !dfcir.stream>) : !dfcir.stream> + %300 = dfcir.mul(%299 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %301 = dfcir.add(%300 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %302 = dfcir.shr(%301 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %303 = dfcir.sub(%211 : !dfcir.stream>, %302 : !dfcir.stream>) : !dfcir.stream> + %304 = dfcir.shr(%303 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %305 = dfcir.mul(%155 : !dfcir.const>, %304 : !dfcir.stream>) : !dfcir.stream> + %306 = dfcir.add(%211 : !dfcir.stream>, %302 : !dfcir.stream>) : !dfcir.stream> + %307 = dfcir.shr(%306 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %308 = dfcir.mul(%161 : !dfcir.const>, %307 : !dfcir.stream>) : !dfcir.stream> + %309 = dfcir.add(%298 : !dfcir.stream>, %289 : !dfcir.stream>) : !dfcir.stream> + %310 = dfcir.mul(%309 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %311 = dfcir.add(%310 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %312 = dfcir.shr(%311 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %313 = dfcir.sub(%212 : !dfcir.stream>, %312 : !dfcir.stream>) : !dfcir.stream> + %314 = dfcir.shr(%313 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %315 = dfcir.mul(%153 : !dfcir.const>, %314 : !dfcir.stream>) : !dfcir.stream> + %316 = dfcir.add(%212 : !dfcir.stream>, %312 : !dfcir.stream>) : !dfcir.stream> + %317 = dfcir.shr(%316 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %318 = dfcir.mul(%163 : !dfcir.const>, %317 : !dfcir.stream>) : !dfcir.stream> + %319 = dfcir.add(%172 : !dfcir.stream>, %297 : !dfcir.stream>) : !dfcir.stream> + %320 = dfcir.sub(%215 : !dfcir.stream>, %319 : !dfcir.stream>) : !dfcir.stream> + %321 = dfcir.shr(%320 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %322 = dfcir.mul(%151 : !dfcir.const>, %321 : !dfcir.stream>) : !dfcir.stream> + %323 = dfcir.add(%215 : !dfcir.stream>, %319 : !dfcir.stream>) : !dfcir.stream> + %324 = dfcir.shr(%323 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %325 = dfcir.mul(%165 : !dfcir.const>, %324 : !dfcir.stream>) : !dfcir.stream> + %326 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %327 = dfcir.mul(%326 : !dfcir.const>, %44 : !dfcir.stream>) : !dfcir.stream> + %328 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %329 = dfcir.mul(%328 : !dfcir.const>, %18 : !dfcir.stream>) : !dfcir.stream> + %330 = dfcir.mul(%266 : !dfcir.const>, %45 : !dfcir.stream>) : !dfcir.stream> + %331 = dfcir.sub(%330 : !dfcir.stream>, %327 : !dfcir.stream>) : !dfcir.stream> + %332 = dfcir.sub(%175 : !dfcir.stream>, %331 : !dfcir.stream>) : !dfcir.stream> + %333 = dfcir.add(%175 : !dfcir.stream>, %331 : !dfcir.stream>) : !dfcir.stream> + %334 = dfcir.sub(%221 : !dfcir.stream>, %333 : !dfcir.stream>) : !dfcir.stream> + %335 = dfcir.shr(%334 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %336 = dfcir.mul(%67 : !dfcir.const>, %335 : !dfcir.stream>) : !dfcir.stream> + %337 = dfcir.add(%221 : !dfcir.stream>, %333 : !dfcir.stream>) : !dfcir.stream> + %338 = dfcir.shr(%337 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %339 = dfcir.mul(%69 : !dfcir.const>, %338 : !dfcir.stream>) : !dfcir.stream> + %340 = dfcir.sub(%330 : !dfcir.stream>, %329 : !dfcir.stream>) : !dfcir.stream> + %341 = dfcir.sub(%178 : !dfcir.stream>, %340 : !dfcir.stream>) : !dfcir.stream> + %342 = dfcir.sub(%341 : !dfcir.stream>, %332 : !dfcir.stream>) : !dfcir.stream> + %343 = dfcir.mul(%342 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %344 = dfcir.add(%343 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %345 = dfcir.shr(%344 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %346 = dfcir.sub(%218 : !dfcir.stream>, %345 : !dfcir.stream>) : !dfcir.stream> + %347 = dfcir.shr(%346 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %348 = dfcir.mul(%65 : !dfcir.const>, %347 : !dfcir.stream>) : !dfcir.stream> + %349 = dfcir.add(%218 : !dfcir.stream>, %345 : !dfcir.stream>) : !dfcir.stream> + %350 = dfcir.shr(%349 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %351 = dfcir.mul(%71 : !dfcir.const>, %350 : !dfcir.stream>) : !dfcir.stream> + %352 = dfcir.add(%341 : !dfcir.stream>, %332 : !dfcir.stream>) : !dfcir.stream> + %353 = dfcir.mul(%352 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %354 = dfcir.add(%353 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %355 = dfcir.shr(%354 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %356 = dfcir.sub(%219 : !dfcir.stream>, %355 : !dfcir.stream>) : !dfcir.stream> + %357 = dfcir.shr(%356 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %358 = dfcir.mul(%63 : !dfcir.const>, %357 : !dfcir.stream>) : !dfcir.stream> + %359 = dfcir.add(%219 : !dfcir.stream>, %355 : !dfcir.stream>) : !dfcir.stream> + %360 = dfcir.shr(%359 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %361 = dfcir.mul(%73 : !dfcir.const>, %360 : !dfcir.stream>) : !dfcir.stream> + %362 = dfcir.add(%178 : !dfcir.stream>, %340 : !dfcir.stream>) : !dfcir.stream> + %363 = dfcir.sub(%222 : !dfcir.stream>, %362 : !dfcir.stream>) : !dfcir.stream> + %364 = dfcir.shr(%363 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %365 = dfcir.mul(%61 : !dfcir.const>, %364 : !dfcir.stream>) : !dfcir.stream> + %366 = dfcir.add(%222 : !dfcir.stream>, %362 : !dfcir.stream>) : !dfcir.stream> + %367 = dfcir.shr(%366 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %368 = dfcir.mul(%75 : !dfcir.const>, %367 : !dfcir.stream>) : !dfcir.stream> + %369 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %370 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %371 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %372 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %373 = dfcir.mul(%372 : !dfcir.const>, %110 : !dfcir.stream>) : !dfcir.stream> + %374 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %375 = dfcir.mul(%374 : !dfcir.const>, %139 : !dfcir.stream>) : !dfcir.stream> + %376 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %377 = dfcir.mul(%376 : !dfcir.const>, %264 : !dfcir.stream>) : !dfcir.stream> + %378 = dfcir.mul(%266 : !dfcir.const>, %265 : !dfcir.stream>) : !dfcir.stream> + %379 = dfcir.sub(%378 : !dfcir.stream>, %375 : !dfcir.stream>) : !dfcir.stream> + %380 = dfcir.sub(%186 : !dfcir.stream>, %379 : !dfcir.stream>) : !dfcir.stream> + %381 = dfcir.add(%186 : !dfcir.stream>, %379 : !dfcir.stream>) : !dfcir.stream> + %382 = dfcir.sub(%378 : !dfcir.stream>, %377 : !dfcir.stream>) : !dfcir.stream> + %383 = dfcir.sub(%189 : !dfcir.stream>, %382 : !dfcir.stream>) : !dfcir.stream> + %384 = dfcir.sub(%383 : !dfcir.stream>, %380 : !dfcir.stream>) : !dfcir.stream> + %385 = dfcir.mul(%384 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %386 = dfcir.add(%385 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %387 = dfcir.shr(%386 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %388 = dfcir.add(%383 : !dfcir.stream>, %380 : !dfcir.stream>) : !dfcir.stream> + %389 = dfcir.mul(%388 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %390 = dfcir.add(%389 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %391 = dfcir.shr(%390 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %392 = dfcir.add(%189 : !dfcir.stream>, %382 : !dfcir.stream>) : !dfcir.stream> + %393 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %394 = dfcir.mul(%393 : !dfcir.const>, %259 : !dfcir.stream>) : !dfcir.stream> + %395 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %396 = dfcir.mul(%395 : !dfcir.const>, %108 : !dfcir.stream>) : !dfcir.stream> + %397 = dfcir.mul(%266 : !dfcir.const>, %260 : !dfcir.stream>) : !dfcir.stream> + %398 = dfcir.sub(%397 : !dfcir.stream>, %394 : !dfcir.stream>) : !dfcir.stream> + %399 = dfcir.sub(%192 : !dfcir.stream>, %398 : !dfcir.stream>) : !dfcir.stream> + %400 = dfcir.add(%192 : !dfcir.stream>, %398 : !dfcir.stream>) : !dfcir.stream> + %401 = dfcir.sub(%230 : !dfcir.stream>, %400 : !dfcir.stream>) : !dfcir.stream> + %402 = dfcir.shr(%401 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %403 = dfcir.mul(%66 : !dfcir.const>, %402 : !dfcir.stream>) : !dfcir.stream> + %404 = dfcir.add(%402 : !dfcir.stream>, %335 : !dfcir.stream>) : !dfcir.stream> + %405 = dfcir.mul(%404 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %406 = dfcir.add(%405 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %407 = dfcir.add(%406 : !dfcir.stream>, %403 : !dfcir.stream>) : !dfcir.stream> + %408 = dfcir.shr(%407 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %409 = dfcir.sub(%406 : !dfcir.stream>, %336 : !dfcir.stream>) : !dfcir.stream> + %410 = dfcir.shr(%409 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %411 = dfcir.add(%230 : !dfcir.stream>, %400 : !dfcir.stream>) : !dfcir.stream> + %412 = dfcir.shr(%411 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %413 = dfcir.mul(%68 : !dfcir.const>, %412 : !dfcir.stream>) : !dfcir.stream> + %414 = dfcir.add(%412 : !dfcir.stream>, %338 : !dfcir.stream>) : !dfcir.stream> + %415 = dfcir.mul(%414 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %416 = dfcir.add(%415 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %417 = dfcir.add(%416 : !dfcir.stream>, %413 : !dfcir.stream>) : !dfcir.stream> + %418 = dfcir.shr(%417 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %419 = dfcir.sub(%416 : !dfcir.stream>, %339 : !dfcir.stream>) : !dfcir.stream> + %420 = dfcir.shr(%419 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %421 = dfcir.sub(%397 : !dfcir.stream>, %396 : !dfcir.stream>) : !dfcir.stream> + %422 = dfcir.sub(%195 : !dfcir.stream>, %421 : !dfcir.stream>) : !dfcir.stream> + %423 = dfcir.sub(%422 : !dfcir.stream>, %399 : !dfcir.stream>) : !dfcir.stream> + %424 = dfcir.mul(%423 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %425 = dfcir.add(%424 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %426 = dfcir.shr(%425 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %427 = dfcir.sub(%227 : !dfcir.stream>, %426 : !dfcir.stream>) : !dfcir.stream> + %428 = dfcir.shr(%427 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %429 = dfcir.mul(%64 : !dfcir.const>, %428 : !dfcir.stream>) : !dfcir.stream> + %430 = dfcir.add(%428 : !dfcir.stream>, %347 : !dfcir.stream>) : !dfcir.stream> + %431 = dfcir.mul(%430 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %432 = dfcir.add(%431 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %433 = dfcir.add(%432 : !dfcir.stream>, %429 : !dfcir.stream>) : !dfcir.stream> + %434 = dfcir.shr(%433 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %435 = dfcir.sub(%432 : !dfcir.stream>, %348 : !dfcir.stream>) : !dfcir.stream> + %436 = dfcir.shr(%435 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %437 = dfcir.add(%227 : !dfcir.stream>, %426 : !dfcir.stream>) : !dfcir.stream> + %438 = dfcir.shr(%437 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %439 = dfcir.mul(%70 : !dfcir.const>, %438 : !dfcir.stream>) : !dfcir.stream> + %440 = dfcir.add(%438 : !dfcir.stream>, %350 : !dfcir.stream>) : !dfcir.stream> + %441 = dfcir.mul(%440 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %442 = dfcir.add(%441 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %443 = dfcir.add(%442 : !dfcir.stream>, %439 : !dfcir.stream>) : !dfcir.stream> + %444 = dfcir.shr(%443 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %445 = dfcir.sub(%442 : !dfcir.stream>, %351 : !dfcir.stream>) : !dfcir.stream> + %446 = dfcir.shr(%445 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %447 = dfcir.add(%422 : !dfcir.stream>, %399 : !dfcir.stream>) : !dfcir.stream> + %448 = dfcir.mul(%447 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %449 = dfcir.add(%448 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %450 = dfcir.shr(%449 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %451 = dfcir.sub(%228 : !dfcir.stream>, %450 : !dfcir.stream>) : !dfcir.stream> + %452 = dfcir.shr(%451 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %453 = dfcir.mul(%62 : !dfcir.const>, %452 : !dfcir.stream>) : !dfcir.stream> + %454 = dfcir.add(%452 : !dfcir.stream>, %357 : !dfcir.stream>) : !dfcir.stream> + %455 = dfcir.mul(%454 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %456 = dfcir.add(%455 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %457 = dfcir.add(%456 : !dfcir.stream>, %453 : !dfcir.stream>) : !dfcir.stream> + %458 = dfcir.shr(%457 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %459 = dfcir.sub(%456 : !dfcir.stream>, %358 : !dfcir.stream>) : !dfcir.stream> + %460 = dfcir.shr(%459 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %461 = dfcir.add(%228 : !dfcir.stream>, %450 : !dfcir.stream>) : !dfcir.stream> + %462 = dfcir.shr(%461 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %463 = dfcir.mul(%72 : !dfcir.const>, %462 : !dfcir.stream>) : !dfcir.stream> + %464 = dfcir.add(%462 : !dfcir.stream>, %360 : !dfcir.stream>) : !dfcir.stream> + %465 = dfcir.mul(%464 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %466 = dfcir.add(%465 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %467 = dfcir.add(%466 : !dfcir.stream>, %463 : !dfcir.stream>) : !dfcir.stream> + %468 = dfcir.shr(%467 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %469 = dfcir.sub(%466 : !dfcir.stream>, %361 : !dfcir.stream>) : !dfcir.stream> + %470 = dfcir.shr(%469 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %471 = dfcir.add(%195 : !dfcir.stream>, %421 : !dfcir.stream>) : !dfcir.stream> + %472 = dfcir.sub(%231 : !dfcir.stream>, %471 : !dfcir.stream>) : !dfcir.stream> + %473 = dfcir.shr(%472 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %474 = dfcir.mul(%60 : !dfcir.const>, %473 : !dfcir.stream>) : !dfcir.stream> + %475 = dfcir.add(%473 : !dfcir.stream>, %364 : !dfcir.stream>) : !dfcir.stream> + %476 = dfcir.mul(%475 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %477 = dfcir.add(%476 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %478 = dfcir.add(%477 : !dfcir.stream>, %474 : !dfcir.stream>) : !dfcir.stream> + %479 = dfcir.shr(%478 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %480 = dfcir.sub(%477 : !dfcir.stream>, %365 : !dfcir.stream>) : !dfcir.stream> + %481 = dfcir.shr(%480 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %482 = dfcir.add(%231 : !dfcir.stream>, %471 : !dfcir.stream>) : !dfcir.stream> + %483 = dfcir.shr(%482 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %484 = dfcir.mul(%74 : !dfcir.const>, %483 : !dfcir.stream>) : !dfcir.stream> + %485 = dfcir.add(%483 : !dfcir.stream>, %367 : !dfcir.stream>) : !dfcir.stream> + %486 = dfcir.mul(%485 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %487 = dfcir.add(%486 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %488 = dfcir.add(%487 : !dfcir.stream>, %484 : !dfcir.stream>) : !dfcir.stream> + %489 = dfcir.shr(%488 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %490 = dfcir.sub(%487 : !dfcir.stream>, %368 : !dfcir.stream>) : !dfcir.stream> + %491 = dfcir.shr(%490 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %492 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %493 = dfcir.mul(%492 : !dfcir.const>, %56 : !dfcir.stream>) : !dfcir.stream> + %494 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %495 = dfcir.mul(%494 : !dfcir.const>, %148 : !dfcir.stream>) : !dfcir.stream> + %496 = dfcir.mul(%266 : !dfcir.const>, %149 : !dfcir.stream>) : !dfcir.stream> + %497 = dfcir.sub(%496 : !dfcir.stream>, %493 : !dfcir.stream>) : !dfcir.stream> + %498 = dfcir.sub(%198 : !dfcir.stream>, %497 : !dfcir.stream>) : !dfcir.stream> + %499 = dfcir.add(%198 : !dfcir.stream>, %497 : !dfcir.stream>) : !dfcir.stream> + %500 = dfcir.sub(%237 : !dfcir.stream>, %499 : !dfcir.stream>) : !dfcir.stream> + %501 = dfcir.shr(%500 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %502 = dfcir.mul(%158 : !dfcir.const>, %501 : !dfcir.stream>) : !dfcir.stream> + %503 = dfcir.add(%501 : !dfcir.stream>, %292 : !dfcir.stream>) : !dfcir.stream> + %504 = dfcir.mul(%503 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %505 = dfcir.add(%504 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %506 = dfcir.sub(%505 : !dfcir.stream>, %293 : !dfcir.stream>) : !dfcir.stream> + %507 = dfcir.shr(%506 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %508 = dfcir.add(%505 : !dfcir.stream>, %502 : !dfcir.stream>) : !dfcir.stream> + %509 = dfcir.shr(%508 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %510 = dfcir.add(%237 : !dfcir.stream>, %499 : !dfcir.stream>) : !dfcir.stream> + %511 = dfcir.shr(%510 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %512 = dfcir.mul(%160 : !dfcir.const>, %511 : !dfcir.stream>) : !dfcir.stream> + %513 = dfcir.add(%511 : !dfcir.stream>, %295 : !dfcir.stream>) : !dfcir.stream> + %514 = dfcir.mul(%513 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %515 = dfcir.add(%514 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %516 = dfcir.sub(%515 : !dfcir.stream>, %296 : !dfcir.stream>) : !dfcir.stream> + %517 = dfcir.shr(%516 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %518 = dfcir.add(%515 : !dfcir.stream>, %512 : !dfcir.stream>) : !dfcir.stream> + %519 = dfcir.shr(%518 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %520 = dfcir.sub(%496 : !dfcir.stream>, %495 : !dfcir.stream>) : !dfcir.stream> + %521 = dfcir.sub(%201 : !dfcir.stream>, %520 : !dfcir.stream>) : !dfcir.stream> + %522 = dfcir.sub(%521 : !dfcir.stream>, %498 : !dfcir.stream>) : !dfcir.stream> + %523 = dfcir.mul(%522 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %524 = dfcir.add(%523 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %525 = dfcir.shr(%524 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %526 = dfcir.sub(%234 : !dfcir.stream>, %525 : !dfcir.stream>) : !dfcir.stream> + %527 = dfcir.shr(%526 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %528 = dfcir.mul(%156 : !dfcir.const>, %527 : !dfcir.stream>) : !dfcir.stream> + %529 = dfcir.add(%527 : !dfcir.stream>, %304 : !dfcir.stream>) : !dfcir.stream> + %530 = dfcir.mul(%529 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %531 = dfcir.add(%530 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %532 = dfcir.sub(%531 : !dfcir.stream>, %305 : !dfcir.stream>) : !dfcir.stream> + %533 = dfcir.shr(%532 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %534 = dfcir.add(%531 : !dfcir.stream>, %528 : !dfcir.stream>) : !dfcir.stream> + %535 = dfcir.shr(%534 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %536 = dfcir.add(%234 : !dfcir.stream>, %525 : !dfcir.stream>) : !dfcir.stream> + %537 = dfcir.shr(%536 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %538 = dfcir.mul(%162 : !dfcir.const>, %537 : !dfcir.stream>) : !dfcir.stream> + %539 = dfcir.add(%537 : !dfcir.stream>, %307 : !dfcir.stream>) : !dfcir.stream> + %540 = dfcir.mul(%539 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %541 = dfcir.add(%540 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %542 = dfcir.sub(%541 : !dfcir.stream>, %308 : !dfcir.stream>) : !dfcir.stream> + %543 = dfcir.shr(%542 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %544 = dfcir.add(%541 : !dfcir.stream>, %538 : !dfcir.stream>) : !dfcir.stream> + %545 = dfcir.shr(%544 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %546 = dfcir.add(%521 : !dfcir.stream>, %498 : !dfcir.stream>) : !dfcir.stream> + %547 = dfcir.mul(%546 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %548 = dfcir.add(%547 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %549 = dfcir.shr(%548 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %550 = dfcir.sub(%235 : !dfcir.stream>, %549 : !dfcir.stream>) : !dfcir.stream> + %551 = dfcir.shr(%550 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %552 = dfcir.mul(%154 : !dfcir.const>, %551 : !dfcir.stream>) : !dfcir.stream> + %553 = dfcir.add(%551 : !dfcir.stream>, %314 : !dfcir.stream>) : !dfcir.stream> + %554 = dfcir.mul(%553 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %555 = dfcir.add(%554 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %556 = dfcir.sub(%555 : !dfcir.stream>, %315 : !dfcir.stream>) : !dfcir.stream> + %557 = dfcir.shr(%556 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %558 = dfcir.add(%555 : !dfcir.stream>, %552 : !dfcir.stream>) : !dfcir.stream> + %559 = dfcir.shr(%558 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %560 = dfcir.add(%235 : !dfcir.stream>, %549 : !dfcir.stream>) : !dfcir.stream> + %561 = dfcir.shr(%560 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %562 = dfcir.mul(%164 : !dfcir.const>, %561 : !dfcir.stream>) : !dfcir.stream> + %563 = dfcir.add(%561 : !dfcir.stream>, %317 : !dfcir.stream>) : !dfcir.stream> + %564 = dfcir.mul(%563 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %565 = dfcir.add(%564 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %566 = dfcir.sub(%565 : !dfcir.stream>, %318 : !dfcir.stream>) : !dfcir.stream> + %567 = dfcir.shr(%566 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %568 = dfcir.add(%565 : !dfcir.stream>, %562 : !dfcir.stream>) : !dfcir.stream> + %569 = dfcir.shr(%568 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %570 = dfcir.add(%201 : !dfcir.stream>, %520 : !dfcir.stream>) : !dfcir.stream> + %571 = dfcir.sub(%238 : !dfcir.stream>, %570 : !dfcir.stream>) : !dfcir.stream> + %572 = dfcir.shr(%571 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %573 = dfcir.mul(%152 : !dfcir.const>, %572 : !dfcir.stream>) : !dfcir.stream> + %574 = dfcir.add(%572 : !dfcir.stream>, %321 : !dfcir.stream>) : !dfcir.stream> + %575 = dfcir.mul(%574 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %576 = dfcir.add(%575 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %577 = dfcir.sub(%576 : !dfcir.stream>, %322 : !dfcir.stream>) : !dfcir.stream> + %578 = dfcir.shr(%577 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %579 = dfcir.add(%576 : !dfcir.stream>, %573 : !dfcir.stream>) : !dfcir.stream> + %580 = dfcir.shr(%579 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %581 = dfcir.add(%238 : !dfcir.stream>, %570 : !dfcir.stream>) : !dfcir.stream> + %582 = dfcir.shr(%581 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %583 = dfcir.mul(%166 : !dfcir.const>, %582 : !dfcir.stream>) : !dfcir.stream> + %584 = dfcir.add(%582 : !dfcir.stream>, %324 : !dfcir.stream>) : !dfcir.stream> + %585 = dfcir.mul(%584 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %586 = dfcir.add(%585 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %587 = dfcir.sub(%586 : !dfcir.stream>, %325 : !dfcir.stream>) : !dfcir.stream> + %588 = dfcir.shr(%587 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %589 = dfcir.add(%586 : !dfcir.stream>, %583 : !dfcir.stream>) : !dfcir.stream> + %590 = dfcir.shr(%589 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %591 = dfcir.add(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %592 = dfcir.mul(%591 : !dfcir.const>, %140 : !dfcir.stream>) : !dfcir.stream> + %593 = dfcir.sub(%266 : !dfcir.const>, %53 : !dfcir.const>) : !dfcir.const> + %594 = dfcir.mul(%593 : !dfcir.const>, %52 : !dfcir.stream>) : !dfcir.stream> + %595 = dfcir.mul(%266 : !dfcir.const>, %141 : !dfcir.stream>) : !dfcir.stream> + %596 = dfcir.sub(%595 : !dfcir.stream>, %592 : !dfcir.stream>) : !dfcir.stream> + %597 = dfcir.sub(%204 : !dfcir.stream>, %596 : !dfcir.stream>) : !dfcir.stream> + %598 = dfcir.add(%204 : !dfcir.stream>, %596 : !dfcir.stream>) : !dfcir.stream> + %599 = dfcir.sub(%251 : !dfcir.stream>, %598 : !dfcir.stream>) : !dfcir.stream> + %600 = dfcir.shr(%599 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %601 = dfcir.shl(%600 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %602 = dfcir.add(%601 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %603 = dfcir.add(%251 : !dfcir.stream>, %598 : !dfcir.stream>) : !dfcir.stream> + %604 = dfcir.shr(%603 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %605 = dfcir.shl(%604 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %606 = dfcir.add(%605 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %607 = dfcir.sub(%595 : !dfcir.stream>, %594 : !dfcir.stream>) : !dfcir.stream> + %608 = dfcir.sub(%207 : !dfcir.stream>, %607 : !dfcir.stream>) : !dfcir.stream> + %609 = dfcir.sub(%608 : !dfcir.stream>, %597 : !dfcir.stream>) : !dfcir.stream> + %610 = dfcir.mul(%609 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %611 = dfcir.add(%610 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %612 = dfcir.shr(%611 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %613 = dfcir.sub(%248 : !dfcir.stream>, %612 : !dfcir.stream>) : !dfcir.stream> + %614 = dfcir.shr(%613 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %615 = dfcir.shl(%614 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %616 = dfcir.add(%615 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %617 = dfcir.add(%248 : !dfcir.stream>, %612 : !dfcir.stream>) : !dfcir.stream> + %618 = dfcir.shr(%617 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %619 = dfcir.shl(%618 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %620 = dfcir.add(%619 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %621 = dfcir.add(%608 : !dfcir.stream>, %597 : !dfcir.stream>) : !dfcir.stream> + %622 = dfcir.mul(%621 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %623 = dfcir.add(%622 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %624 = dfcir.shr(%623 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %625 = dfcir.sub(%249 : !dfcir.stream>, %624 : !dfcir.stream>) : !dfcir.stream> + %626 = dfcir.shr(%625 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %627 = dfcir.shl(%626 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %628 = dfcir.add(%627 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %629 = dfcir.add(%249 : !dfcir.stream>, %624 : !dfcir.stream>) : !dfcir.stream> + %630 = dfcir.shr(%629 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %631 = dfcir.shl(%630 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %632 = dfcir.add(%631 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %633 = dfcir.add(%207 : !dfcir.stream>, %607 : !dfcir.stream>) : !dfcir.stream> + %634 = dfcir.sub(%252 : !dfcir.stream>, %633 : !dfcir.stream>) : !dfcir.stream> + %635 = dfcir.shr(%634 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %636 = dfcir.shl(%635 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %637 = dfcir.add(%636 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %638 = dfcir.add(%252 : !dfcir.stream>, %633 : !dfcir.stream>) : !dfcir.stream> + %639 = dfcir.shr(%638 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %640 = dfcir.shl(%639 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %641 = dfcir.add(%640 : !dfcir.stream>, %109 : !dfcir.const>) : !dfcir.stream> + %642 = dfcir.input> ("x35") + %643 = dfcir.mul(%371 : !dfcir.const>, %642 : !dfcir.stream>) : !dfcir.stream> + %644 = dfcir.add(%110 : !dfcir.stream>, %642 : !dfcir.stream>) : !dfcir.stream> + %645 = dfcir.mul(%266 : !dfcir.const>, %644 : !dfcir.stream>) : !dfcir.stream> + %646 = dfcir.sub(%645 : !dfcir.stream>, %643 : !dfcir.stream>) : !dfcir.stream> + %647 = dfcir.sub(%257 : !dfcir.stream>, %646 : !dfcir.stream>) : !dfcir.stream> + %648 = dfcir.add(%257 : !dfcir.stream>, %646 : !dfcir.stream>) : !dfcir.stream> + %649 = dfcir.sub(%645 : !dfcir.stream>, %373 : !dfcir.stream>) : !dfcir.stream> + %650 = dfcir.sub(%258 : !dfcir.stream>, %649 : !dfcir.stream>) : !dfcir.stream> + %651 = dfcir.sub(%650 : !dfcir.stream>, %647 : !dfcir.stream>) : !dfcir.stream> + %652 = dfcir.mul(%651 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %653 = dfcir.add(%652 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %654 = dfcir.shr(%653 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %655 = dfcir.add(%650 : !dfcir.stream>, %647 : !dfcir.stream>) : !dfcir.stream> + %656 = dfcir.mul(%655 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %657 = dfcir.add(%656 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %658 = dfcir.shr(%657 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %659 = dfcir.add(%258 : !dfcir.stream>, %649 : !dfcir.stream>) : !dfcir.stream> + %660 = dfcir.input> ("x36") + %661 = dfcir.shl(%660 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %662 = dfcir.sub(%223 : !dfcir.stream>, %661 : !dfcir.stream>) : !dfcir.stream> + %663 = dfcir.sub(%662 : !dfcir.stream>, %92 : !dfcir.stream>) : !dfcir.stream> + %664 = dfcir.sub(%663 : !dfcir.stream>, %654 : !dfcir.stream>) : !dfcir.stream> + %665 = dfcir.shr(%664 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %666 = dfcir.shl(%665 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %667 = dfcir.sub(%616 : !dfcir.stream>, %666 : !dfcir.stream>) : !dfcir.stream> + %668 = dfcir.sub(%667 : !dfcir.stream>, %436 : !dfcir.stream>) : !dfcir.stream> + %669 = dfcir.add(%667 : !dfcir.stream>, %436 : !dfcir.stream>) : !dfcir.stream> + %670 = dfcir.add(%616 : !dfcir.stream>, %666 : !dfcir.stream>) : !dfcir.stream> + %671 = dfcir.sub(%670 : !dfcir.stream>, %434 : !dfcir.stream>) : !dfcir.stream> + %672 = dfcir.add(%670 : !dfcir.stream>, %434 : !dfcir.stream>) : !dfcir.stream> + %673 = dfcir.add(%663 : !dfcir.stream>, %654 : !dfcir.stream>) : !dfcir.stream> + %674 = dfcir.shr(%673 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %675 = dfcir.shl(%674 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %676 = dfcir.sub(%620 : !dfcir.stream>, %675 : !dfcir.stream>) : !dfcir.stream> + %677 = dfcir.sub(%676 : !dfcir.stream>, %446 : !dfcir.stream>) : !dfcir.stream> + %678 = dfcir.add(%676 : !dfcir.stream>, %446 : !dfcir.stream>) : !dfcir.stream> + %679 = dfcir.add(%620 : !dfcir.stream>, %675 : !dfcir.stream>) : !dfcir.stream> + %680 = dfcir.sub(%679 : !dfcir.stream>, %444 : !dfcir.stream>) : !dfcir.stream> + %681 = dfcir.add(%679 : !dfcir.stream>, %444 : !dfcir.stream>) : !dfcir.stream> + %682 = dfcir.add(%662 : !dfcir.stream>, %92 : !dfcir.stream>) : !dfcir.stream> + %683 = dfcir.sub(%682 : !dfcir.stream>, %658 : !dfcir.stream>) : !dfcir.stream> + %684 = dfcir.shr(%683 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %685 = dfcir.shl(%684 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %686 = dfcir.sub(%628 : !dfcir.stream>, %685 : !dfcir.stream>) : !dfcir.stream> + %687 = dfcir.sub(%686 : !dfcir.stream>, %460 : !dfcir.stream>) : !dfcir.stream> + %688 = dfcir.add(%686 : !dfcir.stream>, %460 : !dfcir.stream>) : !dfcir.stream> + %689 = dfcir.add(%628 : !dfcir.stream>, %685 : !dfcir.stream>) : !dfcir.stream> + %690 = dfcir.sub(%689 : !dfcir.stream>, %458 : !dfcir.stream>) : !dfcir.stream> + %691 = dfcir.add(%689 : !dfcir.stream>, %458 : !dfcir.stream>) : !dfcir.stream> + %692 = dfcir.add(%682 : !dfcir.stream>, %658 : !dfcir.stream>) : !dfcir.stream> + %693 = dfcir.shr(%692 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %694 = dfcir.shl(%693 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %695 = dfcir.sub(%632 : !dfcir.stream>, %694 : !dfcir.stream>) : !dfcir.stream> + %696 = dfcir.sub(%695 : !dfcir.stream>, %470 : !dfcir.stream>) : !dfcir.stream> + %697 = dfcir.add(%695 : !dfcir.stream>, %470 : !dfcir.stream>) : !dfcir.stream> + %698 = dfcir.add(%632 : !dfcir.stream>, %694 : !dfcir.stream>) : !dfcir.stream> + %699 = dfcir.sub(%698 : !dfcir.stream>, %468 : !dfcir.stream>) : !dfcir.stream> + %700 = dfcir.add(%698 : !dfcir.stream>, %468 : !dfcir.stream>) : !dfcir.stream> + %701 = dfcir.add(%223 : !dfcir.stream>, %661 : !dfcir.stream>) : !dfcir.stream> + %702 = dfcir.sub(%701 : !dfcir.stream>, %89 : !dfcir.stream>) : !dfcir.stream> + %703 = dfcir.sub(%702 : !dfcir.stream>, %648 : !dfcir.stream>) : !dfcir.stream> + %704 = dfcir.shr(%703 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %705 = dfcir.shl(%704 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %706 = dfcir.sub(%602 : !dfcir.stream>, %705 : !dfcir.stream>) : !dfcir.stream> + %707 = dfcir.sub(%706 : !dfcir.stream>, %410 : !dfcir.stream>) : !dfcir.stream> + %708 = dfcir.add(%706 : !dfcir.stream>, %410 : !dfcir.stream>) : !dfcir.stream> + %709 = dfcir.add(%602 : !dfcir.stream>, %705 : !dfcir.stream>) : !dfcir.stream> + %710 = dfcir.sub(%709 : !dfcir.stream>, %408 : !dfcir.stream>) : !dfcir.stream> + %711 = dfcir.add(%709 : !dfcir.stream>, %408 : !dfcir.stream>) : !dfcir.stream> + %712 = dfcir.add(%702 : !dfcir.stream>, %648 : !dfcir.stream>) : !dfcir.stream> + %713 = dfcir.shr(%712 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %714 = dfcir.shl(%713 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %715 = dfcir.sub(%606 : !dfcir.stream>, %714 : !dfcir.stream>) : !dfcir.stream> + %716 = dfcir.sub(%715 : !dfcir.stream>, %420 : !dfcir.stream>) : !dfcir.stream> + %717 = dfcir.add(%715 : !dfcir.stream>, %420 : !dfcir.stream>) : !dfcir.stream> + %718 = dfcir.add(%606 : !dfcir.stream>, %714 : !dfcir.stream>) : !dfcir.stream> + %719 = dfcir.sub(%718 : !dfcir.stream>, %418 : !dfcir.stream>) : !dfcir.stream> + %720 = dfcir.add(%718 : !dfcir.stream>, %418 : !dfcir.stream>) : !dfcir.stream> + %721 = dfcir.add(%701 : !dfcir.stream>, %89 : !dfcir.stream>) : !dfcir.stream> + %722 = dfcir.sub(%721 : !dfcir.stream>, %659 : !dfcir.stream>) : !dfcir.stream> + %723 = dfcir.shr(%722 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %724 = dfcir.shl(%723 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %725 = dfcir.sub(%637 : !dfcir.stream>, %724 : !dfcir.stream>) : !dfcir.stream> + %726 = dfcir.sub(%725 : !dfcir.stream>, %481 : !dfcir.stream>) : !dfcir.stream> + %727 = dfcir.add(%725 : !dfcir.stream>, %481 : !dfcir.stream>) : !dfcir.stream> + %728 = dfcir.add(%637 : !dfcir.stream>, %724 : !dfcir.stream>) : !dfcir.stream> + %729 = dfcir.sub(%728 : !dfcir.stream>, %479 : !dfcir.stream>) : !dfcir.stream> + %730 = dfcir.add(%728 : !dfcir.stream>, %479 : !dfcir.stream>) : !dfcir.stream> + %731 = dfcir.add(%721 : !dfcir.stream>, %659 : !dfcir.stream>) : !dfcir.stream> + %732 = dfcir.shr(%731 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %733 = dfcir.shl(%732 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %734 = dfcir.sub(%641 : !dfcir.stream>, %733 : !dfcir.stream>) : !dfcir.stream> + %735 = dfcir.sub(%734 : !dfcir.stream>, %491 : !dfcir.stream>) : !dfcir.stream> + %736 = dfcir.add(%734 : !dfcir.stream>, %491 : !dfcir.stream>) : !dfcir.stream> + %737 = dfcir.add(%641 : !dfcir.stream>, %733 : !dfcir.stream>) : !dfcir.stream> + %738 = dfcir.sub(%737 : !dfcir.stream>, %489 : !dfcir.stream>) : !dfcir.stream> + %739 = dfcir.add(%737 : !dfcir.stream>, %489 : !dfcir.stream>) : !dfcir.stream> + %740 = dfcir.input> ("x41") + %741 = dfcir.mul(%180 : !dfcir.const>, %740 : !dfcir.stream>) : !dfcir.stream> + %742 = dfcir.input> ("x42") + %743 = dfcir.mul(%85 : !dfcir.const>, %742 : !dfcir.stream>) : !dfcir.stream> + %744 = dfcir.input> ("x43") + %745 = dfcir.mul(%369 : !dfcir.const>, %744 : !dfcir.stream>) : !dfcir.stream> + %746 = dfcir.input> ("x44") + %747 = dfcir.shl(%746 : !dfcir.stream>, 11 : i32) : !dfcir.stream> + %748 = dfcir.sub(%263 : !dfcir.stream>, %747 : !dfcir.stream>) : !dfcir.stream> + %749 = dfcir.add(%263 : !dfcir.stream>, %747 : !dfcir.stream>) : !dfcir.stream> + %750 = dfcir.input> ("x45") + %751 = dfcir.mul(%370 : !dfcir.const>, %750 : !dfcir.stream>) : !dfcir.stream> + %752 = dfcir.add(%750 : !dfcir.stream>, %744 : !dfcir.stream>) : !dfcir.stream> + %753 = dfcir.mul(%266 : !dfcir.const>, %752 : !dfcir.stream>) : !dfcir.stream> + %754 = dfcir.sub(%753 : !dfcir.stream>, %745 : !dfcir.stream>) : !dfcir.stream> + %755 = dfcir.sub(%753 : !dfcir.stream>, %751 : !dfcir.stream>) : !dfcir.stream> + %756 = dfcir.input> ("x46") + %757 = dfcir.mul(%86 : !dfcir.const>, %756 : !dfcir.stream>) : !dfcir.stream> + %758 = dfcir.add(%742 : !dfcir.stream>, %756 : !dfcir.stream>) : !dfcir.stream> + %759 = dfcir.mul(%758 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %760 = dfcir.add(%759 : !dfcir.stream>, %743 : !dfcir.stream>) : !dfcir.stream> + %761 = dfcir.sub(%749 : !dfcir.stream>, %760 : !dfcir.stream>) : !dfcir.stream> + %762 = dfcir.add(%749 : !dfcir.stream>, %760 : !dfcir.stream>) : !dfcir.stream> + %763 = dfcir.sub(%759 : !dfcir.stream>, %757 : !dfcir.stream>) : !dfcir.stream> + %764 = dfcir.sub(%748 : !dfcir.stream>, %763 : !dfcir.stream>) : !dfcir.stream> + %765 = dfcir.add(%748 : !dfcir.stream>, %763 : !dfcir.stream>) : !dfcir.stream> + %766 = dfcir.input> ("x30") + %767 = dfcir.mul(%95 : !dfcir.const>, %766 : !dfcir.stream>) : !dfcir.stream> + %768 = dfcir.add(%21 : !dfcir.stream>, %766 : !dfcir.stream>) : !dfcir.stream> + %769 = dfcir.mul(%768 : !dfcir.stream>, %14 : !dfcir.const>) : !dfcir.stream> + %770 = dfcir.add(%769 : !dfcir.stream>, %94 : !dfcir.stream>) : !dfcir.stream> + %771 = dfcir.sub(%243 : !dfcir.stream>, %770 : !dfcir.stream>) : !dfcir.stream> + %772 = dfcir.sub(%771 : !dfcir.stream>, %381 : !dfcir.stream>) : !dfcir.stream> + %773 = dfcir.shr(%772 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %774 = dfcir.mul(%273 : !dfcir.const>, %773 : !dfcir.stream>) : !dfcir.stream> + %775 = dfcir.add(%771 : !dfcir.stream>, %381 : !dfcir.stream>) : !dfcir.stream> + %776 = dfcir.shr(%775 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %777 = dfcir.mul(%275 : !dfcir.const>, %776 : !dfcir.stream>) : !dfcir.stream> + %778 = dfcir.add(%243 : !dfcir.stream>, %770 : !dfcir.stream>) : !dfcir.stream> + %779 = dfcir.sub(%778 : !dfcir.stream>, %392 : !dfcir.stream>) : !dfcir.stream> + %780 = dfcir.shr(%779 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %781 = dfcir.mul(%267 : !dfcir.const>, %780 : !dfcir.stream>) : !dfcir.stream> + %782 = dfcir.add(%778 : !dfcir.stream>, %392 : !dfcir.stream>) : !dfcir.stream> + %783 = dfcir.shr(%782 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %784 = dfcir.mul(%281 : !dfcir.const>, %783 : !dfcir.stream>) : !dfcir.stream> + %785 = dfcir.sub(%769 : !dfcir.stream>, %767 : !dfcir.stream>) : !dfcir.stream> + %786 = dfcir.sub(%242 : !dfcir.stream>, %785 : !dfcir.stream>) : !dfcir.stream> + %787 = dfcir.sub(%786 : !dfcir.stream>, %387 : !dfcir.stream>) : !dfcir.stream> + %788 = dfcir.shr(%787 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %789 = dfcir.mul(%271 : !dfcir.const>, %788 : !dfcir.stream>) : !dfcir.stream> + %790 = dfcir.add(%786 : !dfcir.stream>, %387 : !dfcir.stream>) : !dfcir.stream> + %791 = dfcir.shr(%790 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %792 = dfcir.mul(%277 : !dfcir.const>, %791 : !dfcir.stream>) : !dfcir.stream> + %793 = dfcir.add(%242 : !dfcir.stream>, %785 : !dfcir.stream>) : !dfcir.stream> + %794 = dfcir.sub(%793 : !dfcir.stream>, %391 : !dfcir.stream>) : !dfcir.stream> + %795 = dfcir.shr(%794 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %796 = dfcir.mul(%269 : !dfcir.const>, %795 : !dfcir.stream>) : !dfcir.stream> + %797 = dfcir.add(%793 : !dfcir.stream>, %391 : !dfcir.stream>) : !dfcir.stream> + %798 = dfcir.shr(%797 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %799 = dfcir.mul(%279 : !dfcir.const>, %798 : !dfcir.stream>) : !dfcir.stream> + %800 = dfcir.input> ("x47") + %801 = dfcir.mul(%179 : !dfcir.const>, %800 : !dfcir.stream>) : !dfcir.stream> + %802 = dfcir.add(%740 : !dfcir.stream>, %800 : !dfcir.stream>) : !dfcir.stream> + %803 = dfcir.mul(%802 : !dfcir.stream>, %116 : !dfcir.const>) : !dfcir.stream> + %804 = dfcir.sub(%803 : !dfcir.stream>, %801 : !dfcir.stream>) : !dfcir.stream> + %805 = dfcir.sub(%804 : !dfcir.stream>, %754 : !dfcir.stream>) : !dfcir.stream> + %806 = dfcir.add(%804 : !dfcir.stream>, %754 : !dfcir.stream>) : !dfcir.stream> + %807 = dfcir.sub(%761 : !dfcir.stream>, %806 : !dfcir.stream>) : !dfcir.stream> + %808 = dfcir.shr(%807 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %809 = dfcir.mul(%274 : !dfcir.const>, %808 : !dfcir.stream>) : !dfcir.stream> + %810 = dfcir.add(%808 : !dfcir.stream>, %773 : !dfcir.stream>) : !dfcir.stream> + %811 = dfcir.mul(%266 : !dfcir.const>, %810 : !dfcir.stream>) : !dfcir.stream> + %812 = dfcir.add(%811 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %813 = dfcir.sub(%812 : !dfcir.stream>, %774 : !dfcir.stream>) : !dfcir.stream> + %814 = dfcir.shr(%813 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %815 = dfcir.sub(%507 : !dfcir.stream>, %814 : !dfcir.stream>) : !dfcir.stream> + %816 = dfcir.add(%507 : !dfcir.stream>, %814 : !dfcir.stream>) : !dfcir.stream> + %817 = dfcir.sub(%710 : !dfcir.stream>, %816 : !dfcir.stream>) : !dfcir.stream> + %818 = dfcir.shr(%817 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %819 = dfcir.output> ("out36") {operandSegmentSizes = array} + dfcir.connect(%819 : !dfcir.stream>, %818 : !dfcir.stream>) + %820 = dfcir.add(%710 : !dfcir.stream>, %816 : !dfcir.stream>) : !dfcir.stream> + %821 = dfcir.shr(%820 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %822 = dfcir.output> ("out28") {operandSegmentSizes = array} + dfcir.connect(%822 : !dfcir.stream>, %821 : !dfcir.stream>) + %823 = dfcir.sub(%812 : !dfcir.stream>, %809 : !dfcir.stream>) : !dfcir.stream> + %824 = dfcir.shr(%823 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %825 = dfcir.sub(%509 : !dfcir.stream>, %824 : !dfcir.stream>) : !dfcir.stream> + %826 = dfcir.sub(%825 : !dfcir.stream>, %815 : !dfcir.stream>) : !dfcir.stream> + %827 = dfcir.mul(%826 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %828 = dfcir.add(%827 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %829 = dfcir.shr(%828 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %830 = dfcir.sub(%707 : !dfcir.stream>, %829 : !dfcir.stream>) : !dfcir.stream> + %831 = dfcir.shr(%830 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %832 = dfcir.output> ("out44") {operandSegmentSizes = array} + dfcir.connect(%832 : !dfcir.stream>, %831 : !dfcir.stream>) + %833 = dfcir.add(%707 : !dfcir.stream>, %829 : !dfcir.stream>) : !dfcir.stream> + %834 = dfcir.shr(%833 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %835 = dfcir.output> ("out20") {operandSegmentSizes = array} + dfcir.connect(%835 : !dfcir.stream>, %834 : !dfcir.stream>) + %836 = dfcir.add(%825 : !dfcir.stream>, %815 : !dfcir.stream>) : !dfcir.stream> + %837 = dfcir.mul(%836 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %838 = dfcir.add(%837 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %839 = dfcir.shr(%838 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %840 = dfcir.sub(%708 : !dfcir.stream>, %839 : !dfcir.stream>) : !dfcir.stream> + %841 = dfcir.shr(%840 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %842 = dfcir.output> ("out52") {operandSegmentSizes = array} + dfcir.connect(%842 : !dfcir.stream>, %841 : !dfcir.stream>) + %843 = dfcir.add(%708 : !dfcir.stream>, %839 : !dfcir.stream>) : !dfcir.stream> + %844 = dfcir.shr(%843 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %845 = dfcir.output> ("out12") {operandSegmentSizes = array} + dfcir.connect(%845 : !dfcir.stream>, %844 : !dfcir.stream>) + %846 = dfcir.add(%509 : !dfcir.stream>, %824 : !dfcir.stream>) : !dfcir.stream> + %847 = dfcir.sub(%711 : !dfcir.stream>, %846 : !dfcir.stream>) : !dfcir.stream> + %848 = dfcir.shr(%847 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %849 = dfcir.output> ("out60") {operandSegmentSizes = array} + dfcir.connect(%849 : !dfcir.stream>, %848 : !dfcir.stream>) + %850 = dfcir.add(%711 : !dfcir.stream>, %846 : !dfcir.stream>) : !dfcir.stream> + %851 = dfcir.shr(%850 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %852 = dfcir.output> ("out4") {operandSegmentSizes = array} + dfcir.connect(%852 : !dfcir.stream>, %851 : !dfcir.stream>) + %853 = dfcir.add(%761 : !dfcir.stream>, %806 : !dfcir.stream>) : !dfcir.stream> + %854 = dfcir.shr(%853 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %855 = dfcir.mul(%276 : !dfcir.const>, %854 : !dfcir.stream>) : !dfcir.stream> + %856 = dfcir.add(%854 : !dfcir.stream>, %776 : !dfcir.stream>) : !dfcir.stream> + %857 = dfcir.mul(%266 : !dfcir.const>, %856 : !dfcir.stream>) : !dfcir.stream> + %858 = dfcir.add(%857 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %859 = dfcir.sub(%858 : !dfcir.stream>, %777 : !dfcir.stream>) : !dfcir.stream> + %860 = dfcir.shr(%859 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %861 = dfcir.sub(%517 : !dfcir.stream>, %860 : !dfcir.stream>) : !dfcir.stream> + %862 = dfcir.add(%517 : !dfcir.stream>, %860 : !dfcir.stream>) : !dfcir.stream> + %863 = dfcir.sub(%719 : !dfcir.stream>, %862 : !dfcir.stream>) : !dfcir.stream> + %864 = dfcir.shr(%863 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %865 = dfcir.output> ("out35") {operandSegmentSizes = array} + dfcir.connect(%865 : !dfcir.stream>, %864 : !dfcir.stream>) + %866 = dfcir.add(%719 : !dfcir.stream>, %862 : !dfcir.stream>) : !dfcir.stream> + %867 = dfcir.shr(%866 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %868 = dfcir.output> ("out27") {operandSegmentSizes = array} + dfcir.connect(%868 : !dfcir.stream>, %867 : !dfcir.stream>) + %869 = dfcir.sub(%858 : !dfcir.stream>, %855 : !dfcir.stream>) : !dfcir.stream> + %870 = dfcir.shr(%869 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %871 = dfcir.sub(%519 : !dfcir.stream>, %870 : !dfcir.stream>) : !dfcir.stream> + %872 = dfcir.sub(%871 : !dfcir.stream>, %861 : !dfcir.stream>) : !dfcir.stream> + %873 = dfcir.mul(%872 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %874 = dfcir.add(%873 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %875 = dfcir.shr(%874 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %876 = dfcir.sub(%716 : !dfcir.stream>, %875 : !dfcir.stream>) : !dfcir.stream> + %877 = dfcir.shr(%876 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %878 = dfcir.output> ("out43") {operandSegmentSizes = array} + dfcir.connect(%878 : !dfcir.stream>, %877 : !dfcir.stream>) + %879 = dfcir.add(%716 : !dfcir.stream>, %875 : !dfcir.stream>) : !dfcir.stream> + %880 = dfcir.shr(%879 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %881 = dfcir.output> ("out19") {operandSegmentSizes = array} + dfcir.connect(%881 : !dfcir.stream>, %880 : !dfcir.stream>) + %882 = dfcir.add(%871 : !dfcir.stream>, %861 : !dfcir.stream>) : !dfcir.stream> + %883 = dfcir.mul(%882 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %884 = dfcir.add(%883 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %885 = dfcir.shr(%884 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %886 = dfcir.sub(%717 : !dfcir.stream>, %885 : !dfcir.stream>) : !dfcir.stream> + %887 = dfcir.shr(%886 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %888 = dfcir.output> ("out51") {operandSegmentSizes = array} + dfcir.connect(%888 : !dfcir.stream>, %887 : !dfcir.stream>) + %889 = dfcir.add(%717 : !dfcir.stream>, %885 : !dfcir.stream>) : !dfcir.stream> + %890 = dfcir.shr(%889 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %891 = dfcir.output> ("out11") {operandSegmentSizes = array} + dfcir.connect(%891 : !dfcir.stream>, %890 : !dfcir.stream>) + %892 = dfcir.add(%519 : !dfcir.stream>, %870 : !dfcir.stream>) : !dfcir.stream> + %893 = dfcir.sub(%720 : !dfcir.stream>, %892 : !dfcir.stream>) : !dfcir.stream> + %894 = dfcir.shr(%893 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %895 = dfcir.output> ("out59") {operandSegmentSizes = array} + dfcir.connect(%895 : !dfcir.stream>, %894 : !dfcir.stream>) + %896 = dfcir.add(%720 : !dfcir.stream>, %892 : !dfcir.stream>) : !dfcir.stream> + %897 = dfcir.shr(%896 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %898 = dfcir.output> ("out3") {operandSegmentSizes = array} + dfcir.connect(%898 : !dfcir.stream>, %897 : !dfcir.stream>) + %899 = dfcir.add(%803 : !dfcir.stream>, %741 : !dfcir.stream>) : !dfcir.stream> + %900 = dfcir.sub(%899 : !dfcir.stream>, %755 : !dfcir.stream>) : !dfcir.stream> + %901 = dfcir.sub(%900 : !dfcir.stream>, %805 : !dfcir.stream>) : !dfcir.stream> + %902 = dfcir.mul(%901 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %903 = dfcir.add(%902 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %904 = dfcir.shr(%903 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %905 = dfcir.sub(%764 : !dfcir.stream>, %904 : !dfcir.stream>) : !dfcir.stream> + %906 = dfcir.shr(%905 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %907 = dfcir.mul(%272 : !dfcir.const>, %906 : !dfcir.stream>) : !dfcir.stream> + %908 = dfcir.add(%906 : !dfcir.stream>, %788 : !dfcir.stream>) : !dfcir.stream> + %909 = dfcir.mul(%266 : !dfcir.const>, %908 : !dfcir.stream>) : !dfcir.stream> + %910 = dfcir.add(%909 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %911 = dfcir.sub(%910 : !dfcir.stream>, %789 : !dfcir.stream>) : !dfcir.stream> + %912 = dfcir.shr(%911 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %913 = dfcir.sub(%533 : !dfcir.stream>, %912 : !dfcir.stream>) : !dfcir.stream> + %914 = dfcir.add(%533 : !dfcir.stream>, %912 : !dfcir.stream>) : !dfcir.stream> + %915 = dfcir.sub(%671 : !dfcir.stream>, %914 : !dfcir.stream>) : !dfcir.stream> + %916 = dfcir.shr(%915 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %917 = dfcir.output> ("out37") {operandSegmentSizes = array} + dfcir.connect(%917 : !dfcir.stream>, %916 : !dfcir.stream>) + %918 = dfcir.add(%671 : !dfcir.stream>, %914 : !dfcir.stream>) : !dfcir.stream> + %919 = dfcir.shr(%918 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %920 = dfcir.output> ("out29") {operandSegmentSizes = array} + dfcir.connect(%920 : !dfcir.stream>, %919 : !dfcir.stream>) + %921 = dfcir.sub(%910 : !dfcir.stream>, %907 : !dfcir.stream>) : !dfcir.stream> + %922 = dfcir.shr(%921 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %923 = dfcir.sub(%535 : !dfcir.stream>, %922 : !dfcir.stream>) : !dfcir.stream> + %924 = dfcir.sub(%923 : !dfcir.stream>, %913 : !dfcir.stream>) : !dfcir.stream> + %925 = dfcir.mul(%924 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %926 = dfcir.add(%925 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %927 = dfcir.shr(%926 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %928 = dfcir.sub(%668 : !dfcir.stream>, %927 : !dfcir.stream>) : !dfcir.stream> + %929 = dfcir.shr(%928 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %930 = dfcir.output> ("out45") {operandSegmentSizes = array} + dfcir.connect(%930 : !dfcir.stream>, %929 : !dfcir.stream>) + %931 = dfcir.add(%668 : !dfcir.stream>, %927 : !dfcir.stream>) : !dfcir.stream> + %932 = dfcir.shr(%931 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %933 = dfcir.output> ("out21") {operandSegmentSizes = array} + dfcir.connect(%933 : !dfcir.stream>, %932 : !dfcir.stream>) + %934 = dfcir.add(%923 : !dfcir.stream>, %913 : !dfcir.stream>) : !dfcir.stream> + %935 = dfcir.mul(%934 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %936 = dfcir.add(%935 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %937 = dfcir.shr(%936 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %938 = dfcir.sub(%669 : !dfcir.stream>, %937 : !dfcir.stream>) : !dfcir.stream> + %939 = dfcir.shr(%938 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %940 = dfcir.output> ("out53") {operandSegmentSizes = array} + dfcir.connect(%940 : !dfcir.stream>, %939 : !dfcir.stream>) + %941 = dfcir.add(%669 : !dfcir.stream>, %937 : !dfcir.stream>) : !dfcir.stream> + %942 = dfcir.shr(%941 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %943 = dfcir.output> ("out13") {operandSegmentSizes = array} + dfcir.connect(%943 : !dfcir.stream>, %942 : !dfcir.stream>) + %944 = dfcir.add(%535 : !dfcir.stream>, %922 : !dfcir.stream>) : !dfcir.stream> + %945 = dfcir.sub(%672 : !dfcir.stream>, %944 : !dfcir.stream>) : !dfcir.stream> + %946 = dfcir.shr(%945 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %947 = dfcir.output> ("out61") {operandSegmentSizes = array} + dfcir.connect(%947 : !dfcir.stream>, %946 : !dfcir.stream>) + %948 = dfcir.add(%672 : !dfcir.stream>, %944 : !dfcir.stream>) : !dfcir.stream> + %949 = dfcir.shr(%948 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %950 = dfcir.output> ("out5") {operandSegmentSizes = array} + dfcir.connect(%950 : !dfcir.stream>, %949 : !dfcir.stream>) + %951 = dfcir.add(%764 : !dfcir.stream>, %904 : !dfcir.stream>) : !dfcir.stream> + %952 = dfcir.shr(%951 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %953 = dfcir.mul(%278 : !dfcir.const>, %952 : !dfcir.stream>) : !dfcir.stream> + %954 = dfcir.add(%952 : !dfcir.stream>, %791 : !dfcir.stream>) : !dfcir.stream> + %955 = dfcir.mul(%266 : !dfcir.const>, %954 : !dfcir.stream>) : !dfcir.stream> + %956 = dfcir.add(%955 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %957 = dfcir.sub(%956 : !dfcir.stream>, %792 : !dfcir.stream>) : !dfcir.stream> + %958 = dfcir.shr(%957 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %959 = dfcir.sub(%543 : !dfcir.stream>, %958 : !dfcir.stream>) : !dfcir.stream> + %960 = dfcir.add(%543 : !dfcir.stream>, %958 : !dfcir.stream>) : !dfcir.stream> + %961 = dfcir.sub(%680 : !dfcir.stream>, %960 : !dfcir.stream>) : !dfcir.stream> + %962 = dfcir.shr(%961 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %963 = dfcir.output> ("out34") {operandSegmentSizes = array} + dfcir.connect(%963 : !dfcir.stream>, %962 : !dfcir.stream>) + %964 = dfcir.add(%680 : !dfcir.stream>, %960 : !dfcir.stream>) : !dfcir.stream> + %965 = dfcir.shr(%964 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %966 = dfcir.output> ("out26") {operandSegmentSizes = array} + dfcir.connect(%966 : !dfcir.stream>, %965 : !dfcir.stream>) + %967 = dfcir.sub(%956 : !dfcir.stream>, %953 : !dfcir.stream>) : !dfcir.stream> + %968 = dfcir.shr(%967 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %969 = dfcir.sub(%545 : !dfcir.stream>, %968 : !dfcir.stream>) : !dfcir.stream> + %970 = dfcir.sub(%969 : !dfcir.stream>, %959 : !dfcir.stream>) : !dfcir.stream> + %971 = dfcir.mul(%970 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %972 = dfcir.add(%971 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %973 = dfcir.shr(%972 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %974 = dfcir.sub(%677 : !dfcir.stream>, %973 : !dfcir.stream>) : !dfcir.stream> + %975 = dfcir.shr(%974 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %976 = dfcir.output> ("out42") {operandSegmentSizes = array} + dfcir.connect(%976 : !dfcir.stream>, %975 : !dfcir.stream>) + %977 = dfcir.add(%677 : !dfcir.stream>, %973 : !dfcir.stream>) : !dfcir.stream> + %978 = dfcir.shr(%977 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %979 = dfcir.output> ("out18") {operandSegmentSizes = array} + dfcir.connect(%979 : !dfcir.stream>, %978 : !dfcir.stream>) + %980 = dfcir.add(%969 : !dfcir.stream>, %959 : !dfcir.stream>) : !dfcir.stream> + %981 = dfcir.mul(%980 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %982 = dfcir.add(%981 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %983 = dfcir.shr(%982 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %984 = dfcir.sub(%678 : !dfcir.stream>, %983 : !dfcir.stream>) : !dfcir.stream> + %985 = dfcir.shr(%984 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %986 = dfcir.output> ("out50") {operandSegmentSizes = array} + dfcir.connect(%986 : !dfcir.stream>, %985 : !dfcir.stream>) + %987 = dfcir.add(%678 : !dfcir.stream>, %983 : !dfcir.stream>) : !dfcir.stream> + %988 = dfcir.shr(%987 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %989 = dfcir.output> ("out10") {operandSegmentSizes = array} + dfcir.connect(%989 : !dfcir.stream>, %988 : !dfcir.stream>) + %990 = dfcir.add(%545 : !dfcir.stream>, %968 : !dfcir.stream>) : !dfcir.stream> + %991 = dfcir.sub(%681 : !dfcir.stream>, %990 : !dfcir.stream>) : !dfcir.stream> + %992 = dfcir.shr(%991 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %993 = dfcir.output> ("out58") {operandSegmentSizes = array} + dfcir.connect(%993 : !dfcir.stream>, %992 : !dfcir.stream>) + %994 = dfcir.add(%681 : !dfcir.stream>, %990 : !dfcir.stream>) : !dfcir.stream> + %995 = dfcir.shr(%994 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %996 = dfcir.output> ("out2") {operandSegmentSizes = array} + dfcir.connect(%996 : !dfcir.stream>, %995 : !dfcir.stream>) + %997 = dfcir.add(%900 : !dfcir.stream>, %805 : !dfcir.stream>) : !dfcir.stream> + %998 = dfcir.mul(%997 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %999 = dfcir.add(%998 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1000 = dfcir.shr(%999 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1001 = dfcir.sub(%765 : !dfcir.stream>, %1000 : !dfcir.stream>) : !dfcir.stream> + %1002 = dfcir.shr(%1001 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1003 = dfcir.mul(%270 : !dfcir.const>, %1002 : !dfcir.stream>) : !dfcir.stream> + %1004 = dfcir.add(%1002 : !dfcir.stream>, %795 : !dfcir.stream>) : !dfcir.stream> + %1005 = dfcir.mul(%266 : !dfcir.const>, %1004 : !dfcir.stream>) : !dfcir.stream> + %1006 = dfcir.add(%1005 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %1007 = dfcir.sub(%1006 : !dfcir.stream>, %796 : !dfcir.stream>) : !dfcir.stream> + %1008 = dfcir.shr(%1007 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1009 = dfcir.sub(%557 : !dfcir.stream>, %1008 : !dfcir.stream>) : !dfcir.stream> + %1010 = dfcir.add(%557 : !dfcir.stream>, %1008 : !dfcir.stream>) : !dfcir.stream> + %1011 = dfcir.sub(%690 : !dfcir.stream>, %1010 : !dfcir.stream>) : !dfcir.stream> + %1012 = dfcir.shr(%1011 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1013 = dfcir.output> ("out38") {operandSegmentSizes = array} + dfcir.connect(%1013 : !dfcir.stream>, %1012 : !dfcir.stream>) + %1014 = dfcir.add(%690 : !dfcir.stream>, %1010 : !dfcir.stream>) : !dfcir.stream> + %1015 = dfcir.shr(%1014 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1016 = dfcir.output> ("out30") {operandSegmentSizes = array} + dfcir.connect(%1016 : !dfcir.stream>, %1015 : !dfcir.stream>) + %1017 = dfcir.sub(%1006 : !dfcir.stream>, %1003 : !dfcir.stream>) : !dfcir.stream> + %1018 = dfcir.shr(%1017 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1019 = dfcir.sub(%559 : !dfcir.stream>, %1018 : !dfcir.stream>) : !dfcir.stream> + %1020 = dfcir.sub(%1019 : !dfcir.stream>, %1009 : !dfcir.stream>) : !dfcir.stream> + %1021 = dfcir.mul(%1020 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1022 = dfcir.add(%1021 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1023 = dfcir.shr(%1022 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1024 = dfcir.sub(%687 : !dfcir.stream>, %1023 : !dfcir.stream>) : !dfcir.stream> + %1025 = dfcir.shr(%1024 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1026 = dfcir.output> ("out46") {operandSegmentSizes = array} + dfcir.connect(%1026 : !dfcir.stream>, %1025 : !dfcir.stream>) + %1027 = dfcir.add(%687 : !dfcir.stream>, %1023 : !dfcir.stream>) : !dfcir.stream> + %1028 = dfcir.shr(%1027 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1029 = dfcir.output> ("out22") {operandSegmentSizes = array} + dfcir.connect(%1029 : !dfcir.stream>, %1028 : !dfcir.stream>) + %1030 = dfcir.add(%1019 : !dfcir.stream>, %1009 : !dfcir.stream>) : !dfcir.stream> + %1031 = dfcir.mul(%1030 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1032 = dfcir.add(%1031 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1033 = dfcir.shr(%1032 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1034 = dfcir.sub(%688 : !dfcir.stream>, %1033 : !dfcir.stream>) : !dfcir.stream> + %1035 = dfcir.shr(%1034 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1036 = dfcir.output> ("out54") {operandSegmentSizes = array} + dfcir.connect(%1036 : !dfcir.stream>, %1035 : !dfcir.stream>) + %1037 = dfcir.add(%688 : !dfcir.stream>, %1033 : !dfcir.stream>) : !dfcir.stream> + %1038 = dfcir.shr(%1037 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1039 = dfcir.output> ("out14") {operandSegmentSizes = array} + dfcir.connect(%1039 : !dfcir.stream>, %1038 : !dfcir.stream>) + %1040 = dfcir.add(%559 : !dfcir.stream>, %1018 : !dfcir.stream>) : !dfcir.stream> + %1041 = dfcir.sub(%691 : !dfcir.stream>, %1040 : !dfcir.stream>) : !dfcir.stream> + %1042 = dfcir.shr(%1041 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1043 = dfcir.output> ("out62") {operandSegmentSizes = array} + dfcir.connect(%1043 : !dfcir.stream>, %1042 : !dfcir.stream>) + %1044 = dfcir.add(%691 : !dfcir.stream>, %1040 : !dfcir.stream>) : !dfcir.stream> + %1045 = dfcir.shr(%1044 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1046 = dfcir.output> ("out6") {operandSegmentSizes = array} + dfcir.connect(%1046 : !dfcir.stream>, %1045 : !dfcir.stream>) + %1047 = dfcir.add(%765 : !dfcir.stream>, %1000 : !dfcir.stream>) : !dfcir.stream> + %1048 = dfcir.shr(%1047 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1049 = dfcir.mul(%280 : !dfcir.const>, %1048 : !dfcir.stream>) : !dfcir.stream> + %1050 = dfcir.add(%1048 : !dfcir.stream>, %798 : !dfcir.stream>) : !dfcir.stream> + %1051 = dfcir.mul(%266 : !dfcir.const>, %1050 : !dfcir.stream>) : !dfcir.stream> + %1052 = dfcir.add(%1051 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %1053 = dfcir.sub(%1052 : !dfcir.stream>, %799 : !dfcir.stream>) : !dfcir.stream> + %1054 = dfcir.shr(%1053 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1055 = dfcir.sub(%567 : !dfcir.stream>, %1054 : !dfcir.stream>) : !dfcir.stream> + %1056 = dfcir.add(%567 : !dfcir.stream>, %1054 : !dfcir.stream>) : !dfcir.stream> + %1057 = dfcir.sub(%699 : !dfcir.stream>, %1056 : !dfcir.stream>) : !dfcir.stream> + %1058 = dfcir.shr(%1057 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1059 = dfcir.output> ("out33") {operandSegmentSizes = array} + dfcir.connect(%1059 : !dfcir.stream>, %1058 : !dfcir.stream>) + %1060 = dfcir.add(%699 : !dfcir.stream>, %1056 : !dfcir.stream>) : !dfcir.stream> + %1061 = dfcir.shr(%1060 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1062 = dfcir.output> ("out25") {operandSegmentSizes = array} + dfcir.connect(%1062 : !dfcir.stream>, %1061 : !dfcir.stream>) + %1063 = dfcir.sub(%1052 : !dfcir.stream>, %1049 : !dfcir.stream>) : !dfcir.stream> + %1064 = dfcir.shr(%1063 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1065 = dfcir.sub(%569 : !dfcir.stream>, %1064 : !dfcir.stream>) : !dfcir.stream> + %1066 = dfcir.sub(%1065 : !dfcir.stream>, %1055 : !dfcir.stream>) : !dfcir.stream> + %1067 = dfcir.mul(%1066 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1068 = dfcir.add(%1067 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1069 = dfcir.shr(%1068 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1070 = dfcir.sub(%696 : !dfcir.stream>, %1069 : !dfcir.stream>) : !dfcir.stream> + %1071 = dfcir.shr(%1070 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1072 = dfcir.output> ("out41") {operandSegmentSizes = array} + dfcir.connect(%1072 : !dfcir.stream>, %1071 : !dfcir.stream>) + %1073 = dfcir.add(%696 : !dfcir.stream>, %1069 : !dfcir.stream>) : !dfcir.stream> + %1074 = dfcir.shr(%1073 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1075 = dfcir.output> ("out17") {operandSegmentSizes = array} + dfcir.connect(%1075 : !dfcir.stream>, %1074 : !dfcir.stream>) + %1076 = dfcir.add(%1065 : !dfcir.stream>, %1055 : !dfcir.stream>) : !dfcir.stream> + %1077 = dfcir.mul(%1076 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1078 = dfcir.add(%1077 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1079 = dfcir.shr(%1078 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1080 = dfcir.sub(%697 : !dfcir.stream>, %1079 : !dfcir.stream>) : !dfcir.stream> + %1081 = dfcir.shr(%1080 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1082 = dfcir.output> ("out49") {operandSegmentSizes = array} + dfcir.connect(%1082 : !dfcir.stream>, %1081 : !dfcir.stream>) + %1083 = dfcir.add(%697 : !dfcir.stream>, %1079 : !dfcir.stream>) : !dfcir.stream> + %1084 = dfcir.shr(%1083 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1085 = dfcir.output> ("out9") {operandSegmentSizes = array} + dfcir.connect(%1085 : !dfcir.stream>, %1084 : !dfcir.stream>) + %1086 = dfcir.add(%569 : !dfcir.stream>, %1064 : !dfcir.stream>) : !dfcir.stream> + %1087 = dfcir.sub(%700 : !dfcir.stream>, %1086 : !dfcir.stream>) : !dfcir.stream> + %1088 = dfcir.shr(%1087 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1089 = dfcir.output> ("out57") {operandSegmentSizes = array} + dfcir.connect(%1089 : !dfcir.stream>, %1088 : !dfcir.stream>) + %1090 = dfcir.add(%700 : !dfcir.stream>, %1086 : !dfcir.stream>) : !dfcir.stream> + %1091 = dfcir.shr(%1090 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1092 = dfcir.output> ("out1") {operandSegmentSizes = array} + dfcir.connect(%1092 : !dfcir.stream>, %1091 : !dfcir.stream>) + %1093 = dfcir.add(%899 : !dfcir.stream>, %755 : !dfcir.stream>) : !dfcir.stream> + %1094 = dfcir.sub(%762 : !dfcir.stream>, %1093 : !dfcir.stream>) : !dfcir.stream> + %1095 = dfcir.shr(%1094 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1096 = dfcir.mul(%268 : !dfcir.const>, %1095 : !dfcir.stream>) : !dfcir.stream> + %1097 = dfcir.add(%1095 : !dfcir.stream>, %780 : !dfcir.stream>) : !dfcir.stream> + %1098 = dfcir.mul(%266 : !dfcir.const>, %1097 : !dfcir.stream>) : !dfcir.stream> + %1099 = dfcir.add(%1098 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %1100 = dfcir.sub(%1099 : !dfcir.stream>, %781 : !dfcir.stream>) : !dfcir.stream> + %1101 = dfcir.shr(%1100 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1102 = dfcir.sub(%578 : !dfcir.stream>, %1101 : !dfcir.stream>) : !dfcir.stream> + %1103 = dfcir.add(%578 : !dfcir.stream>, %1101 : !dfcir.stream>) : !dfcir.stream> + %1104 = dfcir.sub(%729 : !dfcir.stream>, %1103 : !dfcir.stream>) : !dfcir.stream> + %1105 = dfcir.shr(%1104 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1106 = dfcir.output> ("out39") {operandSegmentSizes = array} + dfcir.connect(%1106 : !dfcir.stream>, %1105 : !dfcir.stream>) + %1107 = dfcir.add(%729 : !dfcir.stream>, %1103 : !dfcir.stream>) : !dfcir.stream> + %1108 = dfcir.shr(%1107 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1109 = dfcir.output> ("out31") {operandSegmentSizes = array} + dfcir.connect(%1109 : !dfcir.stream>, %1108 : !dfcir.stream>) + %1110 = dfcir.sub(%1099 : !dfcir.stream>, %1096 : !dfcir.stream>) : !dfcir.stream> + %1111 = dfcir.shr(%1110 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1112 = dfcir.sub(%580 : !dfcir.stream>, %1111 : !dfcir.stream>) : !dfcir.stream> + %1113 = dfcir.sub(%1112 : !dfcir.stream>, %1102 : !dfcir.stream>) : !dfcir.stream> + %1114 = dfcir.mul(%1113 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1115 = dfcir.add(%1114 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1116 = dfcir.shr(%1115 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1117 = dfcir.sub(%726 : !dfcir.stream>, %1116 : !dfcir.stream>) : !dfcir.stream> + %1118 = dfcir.shr(%1117 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1119 = dfcir.output> ("out47") {operandSegmentSizes = array} + dfcir.connect(%1119 : !dfcir.stream>, %1118 : !dfcir.stream>) + %1120 = dfcir.add(%726 : !dfcir.stream>, %1116 : !dfcir.stream>) : !dfcir.stream> + %1121 = dfcir.shr(%1120 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1122 = dfcir.output> ("out23") {operandSegmentSizes = array} + dfcir.connect(%1122 : !dfcir.stream>, %1121 : !dfcir.stream>) + %1123 = dfcir.add(%1112 : !dfcir.stream>, %1102 : !dfcir.stream>) : !dfcir.stream> + %1124 = dfcir.mul(%1123 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1125 = dfcir.add(%1124 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1126 = dfcir.shr(%1125 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1127 = dfcir.sub(%727 : !dfcir.stream>, %1126 : !dfcir.stream>) : !dfcir.stream> + %1128 = dfcir.shr(%1127 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1129 = dfcir.output> ("out55") {operandSegmentSizes = array} + dfcir.connect(%1129 : !dfcir.stream>, %1128 : !dfcir.stream>) + %1130 = dfcir.add(%727 : !dfcir.stream>, %1126 : !dfcir.stream>) : !dfcir.stream> + %1131 = dfcir.shr(%1130 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1132 = dfcir.output> ("out15") {operandSegmentSizes = array} + dfcir.connect(%1132 : !dfcir.stream>, %1131 : !dfcir.stream>) + %1133 = dfcir.add(%580 : !dfcir.stream>, %1111 : !dfcir.stream>) : !dfcir.stream> + %1134 = dfcir.sub(%730 : !dfcir.stream>, %1133 : !dfcir.stream>) : !dfcir.stream> + %1135 = dfcir.shr(%1134 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1136 = dfcir.output> ("out63") {operandSegmentSizes = array} + dfcir.connect(%1136 : !dfcir.stream>, %1135 : !dfcir.stream>) + %1137 = dfcir.add(%730 : !dfcir.stream>, %1133 : !dfcir.stream>) : !dfcir.stream> + %1138 = dfcir.shr(%1137 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1139 = dfcir.output> ("out7") {operandSegmentSizes = array} + dfcir.connect(%1139 : !dfcir.stream>, %1138 : !dfcir.stream>) + %1140 = dfcir.add(%762 : !dfcir.stream>, %1093 : !dfcir.stream>) : !dfcir.stream> + %1141 = dfcir.shr(%1140 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1142 = dfcir.mul(%282 : !dfcir.const>, %1141 : !dfcir.stream>) : !dfcir.stream> + %1143 = dfcir.add(%1141 : !dfcir.stream>, %783 : !dfcir.stream>) : !dfcir.stream> + %1144 = dfcir.mul(%266 : !dfcir.const>, %1143 : !dfcir.stream>) : !dfcir.stream> + %1145 = dfcir.add(%1144 : !dfcir.stream>, %239 : !dfcir.const>) : !dfcir.stream> + %1146 = dfcir.sub(%1145 : !dfcir.stream>, %784 : !dfcir.stream>) : !dfcir.stream> + %1147 = dfcir.shr(%1146 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1148 = dfcir.sub(%588 : !dfcir.stream>, %1147 : !dfcir.stream>) : !dfcir.stream> + %1149 = dfcir.add(%588 : !dfcir.stream>, %1147 : !dfcir.stream>) : !dfcir.stream> + %1150 = dfcir.sub(%738 : !dfcir.stream>, %1149 : !dfcir.stream>) : !dfcir.stream> + %1151 = dfcir.shr(%1150 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1152 = dfcir.output> ("out32") {operandSegmentSizes = array} + dfcir.connect(%1152 : !dfcir.stream>, %1151 : !dfcir.stream>) + %1153 = dfcir.add(%738 : !dfcir.stream>, %1149 : !dfcir.stream>) : !dfcir.stream> + %1154 = dfcir.shr(%1153 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1155 = dfcir.output> ("out24") {operandSegmentSizes = array} + dfcir.connect(%1155 : !dfcir.stream>, %1154 : !dfcir.stream>) + %1156 = dfcir.sub(%1145 : !dfcir.stream>, %1142 : !dfcir.stream>) : !dfcir.stream> + %1157 = dfcir.shr(%1156 : !dfcir.stream>, 3 : i32) : !dfcir.stream> + %1158 = dfcir.sub(%590 : !dfcir.stream>, %1157 : !dfcir.stream>) : !dfcir.stream> + %1159 = dfcir.sub(%1158 : !dfcir.stream>, %1148 : !dfcir.stream>) : !dfcir.stream> + %1160 = dfcir.mul(%1159 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1161 = dfcir.add(%1160 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1162 = dfcir.shr(%1161 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1163 = dfcir.sub(%735 : !dfcir.stream>, %1162 : !dfcir.stream>) : !dfcir.stream> + %1164 = dfcir.shr(%1163 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1165 = dfcir.output> ("out40") {operandSegmentSizes = array} + dfcir.connect(%1165 : !dfcir.stream>, %1164 : !dfcir.stream>) + %1166 = dfcir.add(%735 : !dfcir.stream>, %1162 : !dfcir.stream>) : !dfcir.stream> + %1167 = dfcir.shr(%1166 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1168 = dfcir.output> ("out16") {operandSegmentSizes = array} + dfcir.connect(%1168 : !dfcir.stream>, %1167 : !dfcir.stream>) + %1169 = dfcir.add(%1158 : !dfcir.stream>, %1148 : !dfcir.stream>) : !dfcir.stream> + %1170 = dfcir.mul(%1169 : !dfcir.stream>, %111 : !dfcir.const>) : !dfcir.stream> + %1171 = dfcir.add(%1170 : !dfcir.stream>, %208 : !dfcir.const>) : !dfcir.stream> + %1172 = dfcir.shr(%1171 : !dfcir.stream>, 8 : i32) : !dfcir.stream> + %1173 = dfcir.sub(%736 : !dfcir.stream>, %1172 : !dfcir.stream>) : !dfcir.stream> + %1174 = dfcir.shr(%1173 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1175 = dfcir.output> ("out48") {operandSegmentSizes = array} + dfcir.connect(%1175 : !dfcir.stream>, %1174 : !dfcir.stream>) + %1176 = dfcir.add(%736 : !dfcir.stream>, %1172 : !dfcir.stream>) : !dfcir.stream> + %1177 = dfcir.shr(%1176 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1178 = dfcir.output> ("out8") {operandSegmentSizes = array} + dfcir.connect(%1178 : !dfcir.stream>, %1177 : !dfcir.stream>) + %1179 = dfcir.add(%590 : !dfcir.stream>, %1157 : !dfcir.stream>) : !dfcir.stream> + %1180 = dfcir.sub(%739 : !dfcir.stream>, %1179 : !dfcir.stream>) : !dfcir.stream> + %1181 = dfcir.shr(%1180 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1182 = dfcir.output> ("out56") {operandSegmentSizes = array} + dfcir.connect(%1182 : !dfcir.stream>, %1181 : !dfcir.stream>) + %1183 = dfcir.add(%739 : !dfcir.stream>, %1179 : !dfcir.stream>) : !dfcir.stream> + %1184 = dfcir.shr(%1183 : !dfcir.stream>, 14 : i32) : !dfcir.stream> + %1185 = dfcir.output> ("out0") {operandSegmentSizes = array} + dfcir.connect(%1185 : !dfcir.stream>, %1184 : !dfcir.stream>) + } +} diff --git a/test/data/matrixmul2.mlir b/test/data/matrixmul2.mlir new file mode 100644 index 0000000..f7d539a --- /dev/null +++ b/test/data/matrixmul2.mlir @@ -0,0 +1,32 @@ +module { + dfcir.kernel "MatrixMul2" { + %0 = dfcir.input> ("y22") + %1 = dfcir.input> ("y21") + %2 = dfcir.input> ("y12") + %3 = dfcir.input> ("y11") + %4 = dfcir.input> ("x22") + %5 = dfcir.mul(%4 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %6 = dfcir.mul(%4 : !dfcir.stream>, %1 : !dfcir.stream>) : !dfcir.stream> + %7 = dfcir.input> ("x21") + %8 = dfcir.mul(%7 : !dfcir.stream>, %2 : !dfcir.stream>) : !dfcir.stream> + %9 = dfcir.add(%8 : !dfcir.stream>, %5 : !dfcir.stream>) : !dfcir.stream> + %10 = dfcir.output> ("out22") {operandSegmentSizes = array} + dfcir.connect(%10 : !dfcir.stream>, %9 : !dfcir.stream>) + %11 = dfcir.mul(%7 : !dfcir.stream>, %3 : !dfcir.stream>) : !dfcir.stream> + %12 = dfcir.add(%11 : !dfcir.stream>, %6 : !dfcir.stream>) : !dfcir.stream> + %13 = dfcir.output> ("out21") {operandSegmentSizes = array} + dfcir.connect(%13 : !dfcir.stream>, %12 : !dfcir.stream>) + %14 = dfcir.input> ("x12") + %15 = dfcir.mul(%14 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %16 = dfcir.mul(%14 : !dfcir.stream>, %1 : !dfcir.stream>) : !dfcir.stream> + %17 = dfcir.input> ("x11") + %18 = dfcir.mul(%17 : !dfcir.stream>, %2 : !dfcir.stream>) : !dfcir.stream> + %19 = dfcir.add(%18 : !dfcir.stream>, %15 : !dfcir.stream>) : !dfcir.stream> + %20 = dfcir.output> ("out12") {operandSegmentSizes = array} + dfcir.connect(%20 : !dfcir.stream>, %19 : !dfcir.stream>) + %21 = dfcir.mul(%17 : !dfcir.stream>, %3 : !dfcir.stream>) : !dfcir.stream> + %22 = dfcir.add(%21 : !dfcir.stream>, %16 : !dfcir.stream>) : !dfcir.stream> + %23 = dfcir.output> ("out11") {operandSegmentSizes = array} + dfcir.connect(%23 : !dfcir.stream>, %22 : !dfcir.stream>) + } +} diff --git a/test/data/movingsum.mlir b/test/data/movingsum.mlir new file mode 100644 index 0000000..83d2afc --- /dev/null +++ b/test/data/movingsum.mlir @@ -0,0 +1,11 @@ +module { + dfcir.kernel "MovingSum" { + %0 = dfcir.input> ("x") + %1 = dfcir.offset(%0, 1 : i64) : !dfcir.stream> + %2 = dfcir.offset(%0, -1 : i64) : !dfcir.stream> + %3 = dfcir.add(%2 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %4 = dfcir.add(%3 : !dfcir.stream>, %1 : !dfcir.stream>) : !dfcir.stream> + %5 = dfcir.output> ("out") {operandSegmentSizes = array} + dfcir.connect(%5 : !dfcir.stream>, %4 : !dfcir.stream>) + } +} diff --git a/test/data/muxmul.mlir b/test/data/muxmul.mlir new file mode 100644 index 0000000..78a6988 --- /dev/null +++ b/test/data/muxmul.mlir @@ -0,0 +1,13 @@ +module { + dfcir.kernel "MuxMul" { + %0 = dfcir.constant> 1 : ui32 + %1 = dfcir.constant> 0 : ui32 + %2 = dfcir.input> ("ctrl") + %3 = dfcir.mux(%2: !dfcir.stream>, %0, %1) : !dfcir.const> + %4 = dfcir.input> ("x") + %5 = dfcir.add(%4 : !dfcir.stream>, %4 : !dfcir.stream>) : !dfcir.stream> + %6 = dfcir.mul(%5 : !dfcir.stream>, %3 : !dfcir.const>) : !dfcir.stream> + %7 = dfcir.output> ("out") {operandSegmentSizes = array} + dfcir.connect(%7 : !dfcir.stream>, %6 : !dfcir.stream>) + } +} diff --git a/test/data/polynomial2.mlir b/test/data/polynomial2.mlir new file mode 100644 index 0000000..8df2cac --- /dev/null +++ b/test/data/polynomial2.mlir @@ -0,0 +1,10 @@ +module { + dfcir.kernel "Polynomial2" { + %0 = dfcir.input> ("x") + %1 = dfcir.mul(%0 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %2 = dfcir.add(%1 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %3 = dfcir.add(%2 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %4 = dfcir.output> ("out") {operandSegmentSizes = array} + dfcir.connect(%4 : !dfcir.stream>, %3 : !dfcir.stream>) + } +} diff --git a/test/data/scalar3.mlir b/test/data/scalar3.mlir new file mode 100644 index 0000000..1b0e9ea --- /dev/null +++ b/test/data/scalar3.mlir @@ -0,0 +1,17 @@ +module { + dfcir.kernel "Scalar3" { + %0 = dfcir.input> ("y3") + %1 = dfcir.input> ("x3") + %2 = dfcir.mul(%1 : !dfcir.stream>, %0 : !dfcir.stream>) : !dfcir.stream> + %3 = dfcir.input> ("y2") + %4 = dfcir.input> ("x2") + %5 = dfcir.mul(%4 : !dfcir.stream>, %3 : !dfcir.stream>) : !dfcir.stream> + %6 = dfcir.input> ("y1") + %7 = dfcir.input> ("x1") + %8 = dfcir.mul(%7 : !dfcir.stream>, %6 : !dfcir.stream>) : !dfcir.stream> + %9 = dfcir.add(%8 : !dfcir.stream>, %5 : !dfcir.stream>) : !dfcir.stream> + %10 = dfcir.add(%9 : !dfcir.stream>, %2 : !dfcir.stream>) : !dfcir.stream> + %11 = dfcir.output> ("out") {operandSegmentSizes = array} + dfcir.connect(%11 : !dfcir.stream>, %10 : !dfcir.stream>) + } +} diff --git a/test/model/CMakeLists.txt b/test/model/CMakeLists.txt index 0cedab5..2e6c580 100644 --- a/test/model/CMakeLists.txt +++ b/test/model/CMakeLists.txt @@ -1,6 +1,8 @@ +add_subdirectory(dfcir) add_subdirectory(dfcxx) set(MODEL_TESTS + ${DFCIR_TESTS} ${DFCXX_TESTS} PARENT_SCOPE ) diff --git a/test/model/dfcir/CMakeLists.txt b/test/model/dfcir/CMakeLists.txt new file mode 100644 index 0000000..f46f6b1 --- /dev/null +++ b/test/model/dfcir/CMakeLists.txt @@ -0,0 +1,10 @@ +set(DFCIR_TESTS + model/dfcir/polynomial2.cpp + model/dfcir/scalar3.cpp + model/dfcir/matrixmul2.cpp + model/dfcir/muxmul.cpp + model/dfcir/addconst.cpp + model/dfcir/movingsum.cpp + model/dfcir/idct.cpp + PARENT_SCOPE +) diff --git a/test/model/dfcir/addconst.cpp b/test/model/dfcir/addconst.cpp new file mode 100644 index 0000000..9e5a858 --- /dev/null +++ b/test/model/dfcir/addconst.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define ADDCONST_DATA_PATH DATA_PATH "/addconst.mlir" + +TEST(DFCIRParsePrint, AddConst) { + std::ifstream fStream(ADDCONST_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +} diff --git a/test/model/dfcir/idct.cpp b/test/model/dfcir/idct.cpp new file mode 100644 index 0000000..1abe998 --- /dev/null +++ b/test/model/dfcir/idct.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define IDCT_DATA_PATH DATA_PATH "/idct.mlir" + +TEST(DFCIRParsePrint, IDCT) { + std::ifstream fStream(IDCT_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +} diff --git a/test/model/dfcir/matrixmul2.cpp b/test/model/dfcir/matrixmul2.cpp new file mode 100644 index 0000000..e3a91d1 --- /dev/null +++ b/test/model/dfcir/matrixmul2.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define MATRIXMUL2_DATA_PATH DATA_PATH "/matrixmul2.mlir" + +TEST(DFCIRParsePrint, MatrixMul2) { + std::ifstream fStream(MATRIXMUL2_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +} diff --git a/test/model/dfcir/movingsum.cpp b/test/model/dfcir/movingsum.cpp new file mode 100644 index 0000000..539d0ce --- /dev/null +++ b/test/model/dfcir/movingsum.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define MOVINGSUM_DATA_PATH DATA_PATH "/movingsum.mlir" + +TEST(DFCIRParsePrint, MovingSum) { + std::ifstream fStream(MOVINGSUM_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +} diff --git a/test/model/dfcir/muxmul.cpp b/test/model/dfcir/muxmul.cpp new file mode 100644 index 0000000..14f459d --- /dev/null +++ b/test/model/dfcir/muxmul.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define MUXMUL_DATA_PATH DATA_PATH "/muxmul.mlir" + +TEST(DFCIRParsePrint, MuxMul) { + std::ifstream fStream(MUXMUL_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +} diff --git a/test/model/dfcir/polynomial2.cpp b/test/model/dfcir/polynomial2.cpp new file mode 100644 index 0000000..990e674 --- /dev/null +++ b/test/model/dfcir/polynomial2.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define POLYNOMIAL2_DATA_PATH DATA_PATH "/polynomial2.mlir" + +TEST(DFCIRParsePrint, Polynomial2) { + std::ifstream fStream(POLYNOMIAL2_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +} diff --git a/test/model/dfcir/scalar3.cpp b/test/model/dfcir/scalar3.cpp new file mode 100644 index 0000000..cea6b43 --- /dev/null +++ b/test/model/dfcir/scalar3.cpp @@ -0,0 +1,39 @@ +//===----------------------------------------------------------------------===// +// +// Part of the Utopia HLS Project, under the Apache License v2.0 +// SPDX-License-Identifier: Apache-2.0 +// Copyright 2024 ISP RAS (http://www.ispras.ru) +// +//===----------------------------------------------------------------------===// + +#include "dfcir/DFCIROperations.h" + +#include "gtest/gtest.h" +#include "llvm/Support/raw_ostream.h" +#include "mlir/Parser/Parser.h" + +#include + +#define SCALAR3_DATA_PATH DATA_PATH "/scalar3.mlir" + +TEST(DFCIRParsePrint, Scalar3) { + std::ifstream fStream(SCALAR3_DATA_PATH); + std::stringstream buf; + buf << fStream.rdbuf(); + std::string inputDfcir = buf.str(); + + // Parse the input DFCIR file. + mlir::MLIRContext ctx; + ctx.getOrLoadDialect(); + mlir::ParserConfig parserCfg(&ctx); + auto module = mlir::parseSourceString(inputDfcir, parserCfg); + ASSERT_NE(*module, nullptr); + + // Print the parsed DFCIR file. + std::string parsedDfcir; + llvm::raw_string_ostream stream(parsedDfcir); + module->print(stream); + + // Compare the initial and parsed representations. + ASSERT_STREQ(parsedDfcir.c_str(), inputDfcir.c_str()); +}