nickg / nvc

VHDL compiler and simulator
https://www.nickg.me.uk/nvc/
GNU General Public License v3.0
634 stars 79 forks source link

”** Fatal: accessed 96 bytes beyond process temp stack region" occurs when running VHDL. #450

Closed ikwzm closed 2 years ago

ikwzm commented 2 years ago

I'm currently trying to simulate a VHDL project with nvc.

The project is included at https://github.com/ikwzm/PipeWorkTest. You can download it as follows:

shell$ git clone --branch nvc-issue-449 --depth=1 --recursive https://github.com/ikwzm/PipeWorkTest.git
Cloning into 'PipeWorkTest'...
remote: Enumerating objects: 426, done.        
remote: Counting objects: 100% (426/426), done.        
remote: Compressing objects: 100% (273/273), done.        
remote: Total 426 (delta 212), reused 260 (delta 103), pack-reused 0        
Receiving objects: 100% (426/426), 3.10 MiB | 15.72 MiB/s, done.
Resolving deltas: 100% (212/212), done.
Note: checking out '68937a262530045b6cbef997753f2779ee6cc3e7'.

You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another checkout.

If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -b with the checkout command again. Example:

  git checkout -b <new-branch-name>

Submodule 'Dummy_Plug' (https://github.com/ikwzm/Dummy_Plug.git) registered for path 'Dummy_Plug'
Submodule 'PipeWork' (https://github.com/ikwzm/PipeWork.git) registered for path 'PipeWork'
Cloning into '/mnt/d/ichiro/work/tmp/PipeWorkTest/Dummy_Plug'...
remote: Enumerating objects: 5478, done.        
remote: Counting objects: 100% (118/118), done.        
remote: Compressing objects: 100% (75/75), done.        
remote: Total 5478 (delta 51), reused 90 (delta 32), pack-reused 5360        
Receiving objects: 100% (5478/5478), 6.80 MiB | 8.34 MiB/s, done.
Resolving deltas: 100% (4391/4391), done.
Cloning into '/mnt/d/ichiro/work/tmp/PipeWorkTest/PipeWork'...
remote: Enumerating objects: 2718, done.        
remote: Counting objects: 100% (154/154), done.        
remote: Compressing objects: 100% (103/103), done.        
remote: Total 2718 (delta 99), reused 94 (delta 48), pack-reused 2564        
Receiving objects: 100% (2718/2718), 2.14 MiB | 7.04 MiB/s, done.
Resolving deltas: 100% (1993/1993), done.
Submodule path 'Dummy_Plug': checked out '1192b10219033972e418ae270244f72cc4edffbe'
Submodule 'docs' (https://github.com/ikwzm/Dummy_Plug.git) registered for path 'Dummy_Plug/docs'
Cloning into '/mnt/d/ichiro/work/tmp/PipeWorkTest/Dummy_Plug/docs'...
remote: Enumerating objects: 5478, done.        
remote: Counting objects: 100% (118/118), done.        
remote: Compressing objects: 100% (75/75), done.        
remote: Total 5478 (delta 51), reused 90 (delta 32), pack-reused 5360        
Receiving objects: 100% (5478/5478), 6.80 MiB | 12.31 MiB/s, done.
Resolving deltas: 100% (4391/4391), done.
Submodule path 'Dummy_Plug/docs': checked out 'a801570f3d1d46f52edd64d02ba9960fef2d5728'
Submodule path 'PipeWork': checked out '854351a8c182c88d35a26eb09f6a530893c48e78'

The project is sim/nvc/image_stream_buffer You can recreate the error by running:

shell$ cd PipeWorkTest/sim/nvc/image_stream_buffer/
shell$ make test_0_2_32x1x1_32x4x3x3
sh analyze_libs.sh
nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_0_2_32x1x1_32x4x3x3
cp ../../../src/test/scenarios/image_stream_buffer/test_0_2_32x1x1_32x4x3x3.snr  test_0_2_32x1x1_32x4x3x3.snr
nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_0_2_32x1x1_32x4x3x3
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=2 CHANNEL_SIZE=0 I.C=32 I.X=1 I.Y=1 O.C=32 O.D=4 O.X=3 O.Y=3
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=32 X.SIZE=1 Y.SIZE=1 
       155 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.2 C.SIZE=64 X.SIZE=1 Y.SIZE=1 
       305 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.3 C.SIZE=64 X.SIZE=2 Y.SIZE=2 
** Fatal: accessed 96 bytes beyond process temp stack region
[0x7fa93fa1bdcc] ../src/util.c:673 fatal_trace
[0x7fa93fa1c359] ../src/util.c:787 check_guard_page
[0x7fa93fa1c359] ../src/util.c:895 signal_handler.lto_priv.465
[0x7fa93f23ef1f] (/lib/x86_64-linux-gnu/libc-2.27.so) 
[0x7fa93f2bb71a] (/lib/x86_64-linux-gnu/libc-2.27.so) 
[0x7fa937e72f16] ../../../PipeWork/src/image/image_types.vhd:1129 PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(II37PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE51PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_STRIDE_PARAM_TYPE45PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_BORDER_TYPE)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE [VHDL]
        is
-->         variable  param             :  IMAGE_STREAM_PARAM_TYPE;
        begin
[0x7fa937e9be21] ../../../src/test/vhdl/image_stream_models/image_stream_player.vhd:467 WORK.IMAGE_STREAM_BUFFER_TEST_0_2_32X1X1_32X4X3X3.TB.O.T.MATCH_IMAGE_STREAM_SIGNALS(25DUMMY_PLUG.CORE.CORE_TYPE81WORK.IMAGE_STREAM_BUFFER_TEST_0_2_32X1X1_32X4X3X3.TB.O.T.IMAGE_STREAM_SIGNAL_TYPEB) [VHDL]
                          Y         : integer;
-->                       X         : integer;
                          D         : integer;
[0x7fa937e806be] ../../../src/test/vhdl/image_stream_models/image_stream_player.vhd:1007 WORK.IMAGE_STREAM_BUFFER_TEST_0_2_32X1X1_32X4X3X3.TB.O.T.line_459.EXECUTE_CHECK [VHDL]
                        end loop;
-->                     match_image_stream_signals(core, chk_signals, match);
                        MATCH_GPI(core, gpi_signals, GPI, match);
[0x7fa937e6849f] ../../../src/test/vhdl/image_stream_models/image_stream_player.vhd:1288 WORK.IMAGE_STREAM_BUFFER_TEST_0_2_32X1X1_32X4X3X3.TB.O.T.line_459 [VHDL]
                            when KEY_WAIT   => execute_wait;
-->                         when KEY_CHECK  => execute_check;
                            when others     => EXECUTE_UNDEFINED_MAP_KEY(core, stream, keyword);
[0x7fa93fa809a7] ../src/rt/rtkern.c:2906 rt_resume.lto_priv.510
[0x7fa93fa88d16] ../src/nvc.c:3049 run
[0x7fa93fa88d16] ../src/rt/rtkern.c:935 process_command
[0x7fa93fa0d23e] ../src/nvc.c:1032 main
Makefile:61: recipe for target 'test_0_2_32x1x1_32x4x3x3' failed
make: *** [test_0_2_32x1x1_32x4x3x3] Error 1
nickg commented 2 years ago

The error above is fixed now but I get some failures running this test, not sure if it's expected or not:

  ***
  ***  ERROR REPORT test_0_2_32x1x1_32x4x3x3
  ***
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 462208
  ***    Warning  : 0
  ***
** Fatal: 50466ns+0: Assertion Failure: Simulation complete(mismatch).
        Process :image_stream_buffer_test_0_2_32x1x1_32x4x3x3:tb:line_246
            File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 268
ikwzm commented 2 years ago

Thank you for the quick response.

A lot of mismatches are incorrect behavior. For example, GHDL or Vivado does not cause a mismatch. This mismatch will be investigated in the future, but may require your help. It seems that'U'is output where the value is output.

ikwzm commented 2 years ago

I tried nvc 1.6.2 and got the expected results. Thank you very much.

nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_0_2_32x1x1_32x4x3x3
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=2 CHANNEL_SIZE=0 I.C=32 I.X=1 I.Y=1 O.C=32 O.D=4 O.X=3 O.Y=3
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=32 X.SIZE=1 Y.SIZE=1 
       155 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.2 C.SIZE=64 X.SIZE=1 Y.SIZE=1 
       305 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.3 C.SIZE=64 X.SIZE=2 Y.SIZE=2 
       525 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.4 C.SIZE=64 X.SIZE=3 Y.SIZE=3 
       855 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.5 C.SIZE=64 X.SIZE=4 Y.SIZE=4 
      1415 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.6 C.SIZE=64 X.SIZE=5 Y.SIZE=5 
      2285 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.7 C.SIZE=64 X.SIZE=10 Y.SIZE=7 
      4795 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.8 C.SIZE=128 X.SIZE=15 Y.SIZE=11 
     16465 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.1 C.SIZE=32 X.SIZE=4 Y.SIZE=8 
     17605 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.2 C.SIZE=64 X.SIZE=4 Y.SIZE=8 
     19485 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.3 C.SIZE=128 X.SIZE=15 Y.SIZE=11 
  ***  
  ***  ERROR REPORT test_0_2_32x1x1_32x4x3x3
  ***  
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
** Note: 50466ns+0: Assertion Note: Simulation complete(success).
    File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 274
nickg commented 2 years ago

I tried nvc 1.6.2 and got the expected results. Thank you very much.

Sorry I didn't find time to look at this directly, but I guess it had the same cause as some other bug I fixed recently. You might want to try the master branch too which has some performance improvements.

ikwzm commented 2 years ago

Sorry. I tried the master branch instead of nvc release 1.6.2. In case of r1.6.2, I got the following error.

shell$ nvc --version
nvc 1.6.2 (Using LLVM 7.0.0)
Copyright (C) 2011-2022  Nick Gasson
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and
you are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
shell$ nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_4_8_1x1x1_1x1x1x1

Name       WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.INIT_IMAGE_STREAM_SIGNAL(9STD_LOGIC)79WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_STREAM_SIGNAL_TYPE
Kind       function
Context    WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T
Blocks     17
Registers  604
Types      55
  WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_STREAM_SIGNAL_TYPE {[*, *, *, *] : 0..8, WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_ATRB_SIGNAL_STREAM{}, [1] : 0..8, [17] : 0..8, 0..8, 0..8}
  WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_ATRB_SIGNAL_STREAM {[*] : 0..8, [*] : 0..8, [*] : 0..8, [*] : 0..8}
  PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE {-2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_STRIDE_PARAM_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_DATA_FIELD_TYPE{}, 0..2}
  PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE {-2^31..2^31-1, PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}}
  PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE {0..2, 0..1, 0..1, -2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1}
  PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_STRIDE_PARAM_TYPE {-2^31..2^31-1, -2^31..2^31-1}
  PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_DATA_FIELD_TYPE {-2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_DATA_ELEM_FIELD_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_VECTOR_RANGE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_DATA_ATRB_FIELD_TYPE{}}
  PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_DATA_ELEM_FIELD_TYPE {-2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1}
  PIPEWORK.IMAGE_TYPES.IMAGE_VECTOR_RANGE_TYPE {-2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1}
  PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_DATA_ATRB_FIELD_TYPE {-2^31..2^31-1, -2^31..2^31-1, -2^31..2^31-1, PIPEWORK.IMAGE_TYPES.IMAGE_VECTOR_RANGE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_VECTOR_RANGE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_VECTOR_RANGE_TYPE{}, PIPEWORK.IMAGE_TYPES.IMAGE_VECTOR_RANGE_TYPE{}}
Variables  6
  WIN_SIGNAL                            // WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_STREAM_SIGNAL_TYPE{}
  i246                                  // #, temp
  i247                                  // #, temp
  i248                                  // #, temp
  i249                                  // #, temp
  record                                // WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_ATRB_SIGNAL_STREAM{}, temp
Result     @<WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_STREAM_SIGNAL_TYPE{}>
Parameters 2
  r0    context                         // P<WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T>
  r1    D                               // 0..8
Begin
   0: r2 := index WIN_SIGNAL            // @<WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_STREAM_SIGNAL_TYPE{}>
      r3 := const 0                     // 0..1 => 0
      r4 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r5 := const 8                     // -2^31..2^31-1 => 8
      r6 := const -2147483648           // -2^31..2^31-1 => -2^31
      r7 := const 2147483647            // -2^31..2^31-1 => 2^31-1
      r8 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r9 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r10 := const 1                    // -2^31..2^31-1 => 1
      r11 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r12 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r13 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r14 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r15 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r16 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r17 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r18 := record ref r17 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r19 := record ref r18 field 4     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r20 := record ref r19 field 3     // @<-2^31..2^31-1> => -2^31..2^31-1
      r21 := load indirect r20          // -2^31..2^31-1
      r22 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r23 := record ref r22 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r24 := record ref r23 field 4     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r25 := record ref r24 field 4     // @<-2^31..2^31-1> => -2^31..2^31-1
      r26 := load indirect r25          // -2^31..2^31-1
      r27 := cmp r21 > r26
      r28 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r29 := record ref r28 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r30 := record ref r29 field 4     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r31 := record ref r30 field 3     // @<-2^31..2^31-1> => -2^31..2^31-1
      r32 := load indirect r31          // -2^31..2^31-1
      r33 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r34 := record ref r33 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r35 := record ref r34 field 4     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r36 := record ref r35 field 4     // @<-2^31..2^31-1> => -2^31..2^31-1
      r37 := load indirect r36          // -2^31..2^31-1
      r38 := sub r37 - r32              // -2^31..2^31-1 => -4294967295..4294967295
      r39 := add r38 + r10              // -2^31..2^31-1 => -4294967294..4294967296
      r40 := cast r39                   // # => -4294967294..4294967296
      r41 := const 0                    // # => 0
      r42 := cmp r40 < r41
      r43 := select r42 then r41 else r40 // #
      r44 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r45 := record ref r44 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r46 := record ref r45 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r47 := record ref r46 field 3     // @<-2^31..2^31-1> => -2^31..2^31-1
      r48 := load indirect r47          // -2^31..2^31-1
      r49 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r50 := record ref r49 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r51 := record ref r50 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r52 := record ref r51 field 4     // @<-2^31..2^31-1> => -2^31..2^31-1
      r53 := load indirect r52          // -2^31..2^31-1
      r54 := sub r53 - r48              // -2^31..2^31-1 => -4294967295..4294967295
      r55 := add r54 + r10              // -2^31..2^31-1 => -4294967294..4294967296
      r56 := cast r55                   // # => -4294967294..4294967296
      r57 := cmp r56 < r41
      r58 := select r57 then r41 else r56 // #
      r59 := mul r58 * r43              // # => -4611686016279904256..4611686018427387904
      r60 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r61 := record ref r60 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r62 := record ref r61 field 2     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r63 := record ref r62 field 3     // @<-2^31..2^31-1> => -2^31..2^31-1
      r64 := load indirect r63          // -2^31..2^31-1
      r65 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r66 := record ref r65 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r67 := record ref r66 field 2     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r68 := record ref r67 field 4     // @<-2^31..2^31-1> => -2^31..2^31-1
      r69 := load indirect r68          // -2^31..2^31-1
      r70 := sub r69 - r64              // -2^31..2^31-1 => -4294967295..4294967295
      r71 := add r70 + r10              // -2^31..2^31-1 => -4294967294..4294967296
      r72 := cast r71                   // # => -4294967294..4294967296
      r73 := cmp r72 < r41
      r74 := select r73 then r41 else r72 // #
      r75 := mul r74 * r59              // # => -4611686018427387904..9223372034707292160
      r76 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r77 := record ref r76 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r78 := record ref r77 field 1     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r79 := record ref r78 field 3     // @<-2^31..2^31-1> => -2^31..2^31-1
      r80 := load indirect r79          // -2^31..2^31-1
      r81 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r82 := record ref r81 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r83 := record ref r82 field 1     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r84 := record ref r83 field 4     // @<-2^31..2^31-1> => -2^31..2^31-1
      r85 := load indirect r84          // -2^31..2^31-1
      r86 := sub r85 - r80              // -2^31..2^31-1 => -4294967295..4294967295
      r87 := add r86 + r10              // -2^31..2^31-1 => -4294967294..4294967296
      r88 := cast r87                   // # => -4294967294..4294967296
      r89 := cmp r88 < r41
      r90 := select r89 then r41 else r88 // #
      r91 := mul r90 * r75              // # => 0..4611686020574871552
      r92 := const 8                    // # => 8
      r93 := mul r91 * r92              // # => 0..17179869184
      r94 := alloca r93                 // @<0..8> => 0..8
      r95 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r96 := record ref r95 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r97 := record ref r96 field 3     // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r98 := record ref r97 field 3     // @<-2^31..2^31-1> => -2^31..2^31-1
      r99 := load indirect r98          // -2^31..2^31-1
      r100 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r101 := record ref r100 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r102 := record ref r101 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r103 := record ref r102 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r104 := load indirect r103        // -2^31..2^31-1
      r105 := sub r104 - r99            // -2^31..2^31-1 => -4294967295..4294967295
      r106 := add r105 + r10            // -2^31..2^31-1 => -4294967294..4294967296
      r107 := cast r106                 // # => -4294967294..4294967296
      r108 := cmp r107 < r41
      r109 := select r108 then r41 else r107 // #
      r110 := mul r92 * r109            // # => -17179869184..17179869176
      r111 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r112 := record ref r111 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r113 := record ref r112 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r114 := record ref r113 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r115 := load indirect r114        // -2^31..2^31-1
      r116 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r117 := record ref r116 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r118 := record ref r117 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r119 := record ref r118 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r120 := load indirect r119        // -2^31..2^31-1
      r121 := sub r120 - r115           // -2^31..2^31-1 => -4294967295..4294967295
      r122 := add r121 + r10            // -2^31..2^31-1 => -4294967294..4294967296
      r123 := cast r122                 // # => -4294967294..4294967296
      r124 := cmp r123 < r41
      r125 := select r124 then r41 else r123 // #
      r126 := mul r110 * r125           // # => -34359738360..17179869184
      r127 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r128 := record ref r127 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r129 := record ref r128 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r130 := record ref r129 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r131 := load indirect r130        // -2^31..2^31-1
      r132 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r4, r5, r10, r10, r10 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r133 := record ref r132 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r134 := record ref r133 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r135 := record ref r134 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r136 := load indirect r135        // -2^31..2^31-1
      r137 := sub r136 - r131           // -2^31..2^31-1 => -4294967295..4294967295
      r138 := add r137 + r10            // -2^31..2^31-1 => -4294967294..4294967296
      r139 := cast r138                 // # => -4294967294..4294967296
      r140 := cmp r139 < r41
      r141 := select r140 then r41 else r139 // #
      r142 := mul r126 * r141           // # => -17179869184..51539607544
      i246 := store r41
      cond r27 then 2 else 1
   1: r143 := load i246                 // #
      r144 := add r143 + r142           // # => -19327352832..53687091191
      i246 := store r144
      r145 := array ref r94 offset r143 // @<0..8> => 0..8
      r146 := const 0                   // 0..1 => 0
      r147 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r148 := const 8                   // -2^31..2^31-1 => 8
      r149 := const -2147483648         // -2^31..2^31-1 => -2^31
      r150 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r151 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r152 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r153 := const 1                   // -2^31..2^31-1 => 1
      r154 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r155 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r156 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r157 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r158 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r159 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r160 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r161 := record ref r160 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r162 := record ref r161 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r163 := record ref r162 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r164 := load indirect r163        // -2^31..2^31-1
      r165 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r166 := record ref r165 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r167 := record ref r166 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r168 := record ref r167 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r169 := load indirect r168        // -2^31..2^31-1
      r170 := cmp r164 > r169
      r171 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r172 := record ref r171 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r173 := record ref r172 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r174 := record ref r173 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r175 := load indirect r174        // -2^31..2^31-1
      r176 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r177 := record ref r176 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r178 := record ref r177 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r179 := record ref r178 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r180 := load indirect r179        // -2^31..2^31-1
      r181 := sub r180 - r175           // -2^31..2^31-1 => -4294967295..4294967295
      r182 := add r181 + r153           // -2^31..2^31-1 => -4294967294..4294967296
      r183 := cast r182                 // # => -4294967294..4294967296
      r184 := const 0                   // # => 0
      r185 := cmp r183 < r184
      r186 := select r185 then r184 else r183 // #
      r187 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r188 := record ref r187 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r189 := record ref r188 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r190 := record ref r189 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r191 := load indirect r190        // -2^31..2^31-1
      r192 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r193 := record ref r192 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r194 := record ref r193 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r195 := record ref r194 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r196 := load indirect r195        // -2^31..2^31-1
      r197 := sub r196 - r191           // -2^31..2^31-1 => -4294967295..4294967295
      r198 := add r197 + r153           // -2^31..2^31-1 => -4294967294..4294967296
      r199 := cast r198                 // # => -4294967294..4294967296
      r200 := cmp r199 < r184
      r201 := select r200 then r184 else r199 // #
      r202 := mul r201 * r186           // # => -4611686016279904256..4611686018427387904
      r203 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r204 := record ref r203 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r205 := record ref r204 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r206 := record ref r205 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r207 := load indirect r206        // -2^31..2^31-1
      r208 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r209 := record ref r208 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r210 := record ref r209 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r211 := record ref r210 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r212 := load indirect r211        // -2^31..2^31-1
      r213 := sub r212 - r207           // -2^31..2^31-1 => -4294967295..4294967295
      r214 := add r213 + r153           // -2^31..2^31-1 => -4294967294..4294967296
      r215 := cast r214                 // # => -4294967294..4294967296
      r216 := cmp r215 < r184
      r217 := select r216 then r184 else r215 // #
      r218 := mul r217 * r202           // # => -4611686018427387904..9223372034707292160
      r219 := const 8                   // # => 8
      r220 := mul r218 * r219           // # => -17179869184..0
      r221 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r222 := record ref r221 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r223 := record ref r222 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r224 := record ref r223 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r225 := load indirect r224        // -2^31..2^31-1
      r226 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r227 := record ref r226 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r228 := record ref r227 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r229 := record ref r228 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r230 := load indirect r229        // -2^31..2^31-1
      r231 := sub r230 - r225           // -2^31..2^31-1 => -4294967295..4294967295
      r232 := add r231 + r153           // -2^31..2^31-1 => -4294967294..4294967296
      r233 := cast r232                 // # => -4294967294..4294967296
      r234 := cmp r233 < r184
      r235 := select r234 then r184 else r233 // #
      r236 := mul r219 * r235           // # => -17179869184..17179869176
      r237 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r238 := record ref r237 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r239 := record ref r238 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r240 := record ref r239 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r241 := load indirect r240        // -2^31..2^31-1
      r242 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r147, r148, r153, r153, r153 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r243 := record ref r242 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r244 := record ref r243 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r245 := record ref r244 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r246 := load indirect r245        // -2^31..2^31-1
      r247 := sub r246 - r241           // -2^31..2^31-1 => -4294967295..4294967295
      r248 := add r247 + r153           // -2^31..2^31-1 => -4294967294..4294967296
      r249 := cast r248                 // # => -4294967294..4294967296
      r250 := cmp r249 < r184
      r251 := select r250 then r184 else r249 // #
      r252 := mul r236 * r251           // # => -34359738360..17179869184
      i247 := store r184
      cond r170 then 4 else 3
   2: r389 := wrap r94 [r21 r26 r3]     // [*] : 0..8
      r390 := const 0                   // 0..1 => 0
      r391 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r392 := const 8                   // -2^31..2^31-1 => 8
      r393 := const -2147483648         // -2^31..2^31-1 => -2^31
      r394 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r395 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r396 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r397 := const 1                   // -2^31..2^31-1 => 1
      r398 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r399 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r400 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r401 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r402 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r403 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r404 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r391, r392, r397, r397, r397 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r405 := record ref r404 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r406 := record ref r405 field 4   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r407 := record ref r406 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r408 := load indirect r407        // -2^31..2^31-1
      r409 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r391, r392, r397, r397, r397 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r410 := record ref r409 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r411 := record ref r410 field 4   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r412 := record ref r411 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r413 := load indirect r412        // -2^31..2^31-1
      r414 := cmp r408 > r413
      r415 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r391, r392, r397, r397, r397 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r416 := record ref r415 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r417 := record ref r416 field 4   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r418 := record ref r417 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r419 := load indirect r418        // -2^31..2^31-1
      r420 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r391, r392, r397, r397, r397 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r421 := record ref r420 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r422 := record ref r421 field 4   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r423 := record ref r422 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r424 := load indirect r423        // -2^31..2^31-1
      r425 := sub r424 - r419           // -2^31..2^31-1 => -4294967295..4294967295
      r426 := add r425 + r397           // -2^31..2^31-1 => -4294967294..4294967296
      r427 := cast r426                 // # => -4294967294..4294967296
      r428 := const 0                   // # => 0
      r429 := cmp r427 < r428
      r430 := select r429 then r428 else r427 // #
      r431 := const 3                   // # => 3
      r432 := mul r430 * r431           // # => -6442450944..6442450941
      r433 := alloca r432               // @<0..8> => 0..8
      i249 := store r428
      cond r414 then 10 else 9
   3: r253 := load i247                 // #
      r254 := add r253 + r252           // # => -36507222008..19327352831
      i247 := store r254
      r255 := array ref r145 offset r253 // @<0..8> => 0..8
      r256 := const 0                   // 0..1 => 0
      r257 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r258 := const 8                   // -2^31..2^31-1 => 8
      r259 := const -2147483648         // -2^31..2^31-1 => -2^31
      r260 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r261 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r262 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r263 := const 1                   // -2^31..2^31-1 => 1
      r264 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r265 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r266 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r267 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r268 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r269 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r270 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r271 := record ref r270 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r272 := record ref r271 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r273 := record ref r272 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r274 := load indirect r273        // -2^31..2^31-1
      r275 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r276 := record ref r275 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r277 := record ref r276 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r278 := record ref r277 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r279 := load indirect r278        // -2^31..2^31-1
      r280 := cmp r274 > r279
      r281 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r282 := record ref r281 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r283 := record ref r282 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r284 := record ref r283 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r285 := load indirect r284        // -2^31..2^31-1
      r286 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r287 := record ref r286 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r288 := record ref r287 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r289 := record ref r288 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r290 := load indirect r289        // -2^31..2^31-1
      r291 := sub r290 - r285           // -2^31..2^31-1 => -4294967295..4294967295
      r292 := add r291 + r263           // -2^31..2^31-1 => -4294967294..4294967296
      r293 := cast r292                 // # => -4294967294..4294967296
      r294 := const 0                   // # => 0
      r295 := cmp r293 < r294
      r296 := select r295 then r294 else r293 // #
      r297 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r298 := record ref r297 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r299 := record ref r298 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r300 := record ref r299 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r301 := load indirect r300        // -2^31..2^31-1
      r302 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r303 := record ref r302 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r304 := record ref r303 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r305 := record ref r304 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r306 := load indirect r305        // -2^31..2^31-1
      r307 := sub r306 - r301           // -2^31..2^31-1 => -4294967295..4294967295
      r308 := add r307 + r263           // -2^31..2^31-1 => -4294967294..4294967296
      r309 := cast r308                 // # => -4294967294..4294967296
      r310 := cmp r309 < r294
      r311 := select r310 then r294 else r309 // #
      r312 := mul r311 * r296           // # => -4611686016279904256..4611686018427387904
      r313 := const 8                   // # => 8
      r314 := mul r312 * r313           // # => 0..17179869184
      r315 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r316 := record ref r315 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r317 := record ref r316 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r318 := record ref r317 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r319 := load indirect r318        // -2^31..2^31-1
      r320 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r257, r258, r263, r263, r263 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r321 := record ref r320 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r322 := record ref r321 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r323 := record ref r322 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r324 := load indirect r323        // -2^31..2^31-1
      r325 := sub r324 - r319           // -2^31..2^31-1 => -4294967295..4294967295
      r326 := add r325 + r263           // -2^31..2^31-1 => -4294967294..4294967296
      r327 := cast r326                 // # => -4294967294..4294967296
      r328 := cmp r327 < r294
      r329 := select r328 then r294 else r327 // #
      r330 := mul r313 * r329           // # => -17179869184..17179869176
      i248 := store r294
      cond r280 then 6 else 5
   4: r387 := wrap r145 [r164 r169 r146] // [*] : 0..8
      r388 := cmp r144 == r93
      cond r388 then 2 else 1
   5: r331 := load i248                 // #
      r332 := add r331 + r330           // # => -19327352832..19327352823
      i248 := store r332
      r333 := array ref r255 offset r331 // @<0..8> => 0..8
      r334 := const 0                   // 0..1 => 0
      r335 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r336 := const 8                   // -2^31..2^31-1 => 8
      r337 := const -2147483648         // -2^31..2^31-1 => -2^31
      r338 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r339 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r340 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r341 := const 1                   // -2^31..2^31-1 => 1
      r342 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r343 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r344 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r345 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r346 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r347 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r348 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r335, r336, r341, r341, r341 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r349 := record ref r348 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r350 := record ref r349 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r351 := record ref r350 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r352 := load indirect r351        // -2^31..2^31-1
      r353 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r335, r336, r341, r341, r341 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r354 := record ref r353 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r355 := record ref r354 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r356 := record ref r355 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r357 := load indirect r356        // -2^31..2^31-1
      r358 := cmp r352 > r357
      r359 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r335, r336, r341, r341, r341 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r360 := record ref r359 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r361 := record ref r360 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r362 := record ref r361 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r363 := load indirect r362        // -2^31..2^31-1
      r364 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r335, r336, r341, r341, r341 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r365 := record ref r364 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r366 := record ref r365 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r367 := record ref r366 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r368 := load indirect r367        // -2^31..2^31-1
      r369 := sub r368 - r363           // -2^31..2^31-1 => -4294967295..4294967295
      r370 := add r369 + r341           // -2^31..2^31-1 => -4294967294..4294967296
      r371 := cast r370                 // # => -4294967294..4294967296
      r372 := const 0                   // # => 0
      r373 := cmp r371 < r372
      r374 := select r373 then r372 else r371 // #
      r375 := const 8                   // # => 8
      r376 := mul r374 * r375           // # => -17179869184..17179869176
      i249 := store r372
      cond r358 then 8 else 7
   6: r385 := wrap r255 [r274 r279 r256] // [*] : 0..8
      r386 := cmp r254 == r220
      cond r386 then 4 else 3
   7: r377 := load i249                 // #
      r378 := add r377 + r375           // # => -2147483640..2147483655
      i249 := store r378
      r379 := array ref r333 offset r377 // @<0..8> => 0..8
      r380 := const 0                   // 0..8 => 0
      r381 := const [r380]*8            // @<0..8> => 0..8
      r379 := copy r381 count r375
      r382 := cmp r378 == r376
      cond r382 then 8 else 7
   8: r383 := wrap r333 [r352 r357 r334] // [*] : 0..8
      r384 := cmp r332 == r314
      cond r384 then 6 else 5
   9: r434 := load i249                 // #
      r435 := add r434 + r431           // # => -2147483645..2147483650
      i249 := store r435
      r436 := array ref r433 offset r434 // @<0..8> => 0..8
      r437 := const 0                   // 0..8 => 0
      r438 := const [r437]*3            // @<0..8> => 0..8
      r436 := copy r438 count r431
      r439 := cmp r435 == r432
      cond r439 then 10 else 9
  10: r440 := wrap r433 [r408 r413 r390] // [*] : 0..8
      r441 := const 0                   // 0..1 => 0
      r442 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r443 := const 8                   // -2^31..2^31-1 => 8
      r444 := const -2147483648         // -2^31..2^31-1 => -2^31
      r445 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r446 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r447 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r448 := const 1                   // -2^31..2^31-1 => 1
      r449 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r450 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r451 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r452 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r453 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r454 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r455 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r442, r443, r448, r448, r448 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r456 := record ref r455 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r457 := record ref r456 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r458 := record ref r457 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r459 := load indirect r458        // -2^31..2^31-1
      r460 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r442, r443, r448, r448, r448 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r461 := record ref r460 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r462 := record ref r461 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r463 := record ref r462 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r464 := load indirect r463        // -2^31..2^31-1
      r465 := cmp r459 > r464
      r466 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r442, r443, r448, r448, r448 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r467 := record ref r466 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r468 := record ref r467 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r469 := record ref r468 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r470 := load indirect r469        // -2^31..2^31-1
      r471 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r442, r443, r448, r448, r448 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r472 := record ref r471 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r473 := record ref r472 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r474 := record ref r473 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r475 := load indirect r474        // -2^31..2^31-1
      r476 := sub r475 - r470           // -2^31..2^31-1 => -4294967295..4294967295
      r477 := add r476 + r448           // -2^31..2^31-1 => -4294967294..4294967296
      r478 := cast r477                 // # => -4294967294..4294967296
      r479 := const 0                   // # => 0
      r480 := cmp r478 < r479
      r481 := select r480 then r479 else r478 // #
      r482 := const 3                   // # => 3
      r483 := mul r481 * r482           // # => -6442450944..6442450941
      r484 := alloca r483               // @<0..8> => 0..8
      i248 := store r479
      cond r465 then 12 else 11
  11: r485 := load i248                 // #
      r486 := add r485 + r482           // # => -2147483645..2147483650
      i248 := store r486
      r487 := array ref r484 offset r485 // @<0..8> => 0..8
      r488 := const 0                   // 0..8 => 0
      r489 := const [r488]*3            // @<0..8> => 0..8
      r487 := copy r489 count r482
      r490 := cmp r486 == r483
      cond r490 then 12 else 11
  12: r491 := wrap r484 [r459 r464 r441] // [*] : 0..8
      r492 := const 0                   // 0..1 => 0
      r493 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r494 := const 8                   // -2^31..2^31-1 => 8
      r495 := const -2147483648         // -2^31..2^31-1 => -2^31
      r496 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r497 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r498 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r499 := const 1                   // -2^31..2^31-1 => 1
      r500 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r501 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r502 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r503 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r504 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r505 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r506 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r493, r494, r499, r499, r499 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r507 := record ref r506 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r508 := record ref r507 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r509 := record ref r508 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r510 := load indirect r509        // -2^31..2^31-1
      r511 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r493, r494, r499, r499, r499 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r512 := record ref r511 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r513 := record ref r512 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r514 := record ref r513 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r515 := load indirect r514        // -2^31..2^31-1
      r516 := cmp r510 > r515
      r517 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r493, r494, r499, r499, r499 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r518 := record ref r517 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r519 := record ref r518 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r520 := record ref r519 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r521 := load indirect r520        // -2^31..2^31-1
      r522 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r493, r494, r499, r499, r499 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r523 := record ref r522 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r524 := record ref r523 field 2   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r525 := record ref r524 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r526 := load indirect r525        // -2^31..2^31-1
      r527 := sub r526 - r521           // -2^31..2^31-1 => -4294967295..4294967295
      r528 := add r527 + r499           // -2^31..2^31-1 => -4294967294..4294967296
      r529 := cast r528                 // # => -4294967294..4294967296
      r530 := const 0                   // # => 0
      r531 := cmp r529 < r530
      r532 := select r531 then r530 else r529 // #
      r533 := const 3                   // # => 3
      r534 := mul r532 * r533           // # => -6442450944..6442450941
      r535 := alloca r534               // @<0..8> => 0..8
      i247 := store r530
      cond r516 then 14 else 13
  13: r536 := load i247                 // #
      r537 := add r536 + r533           // # => -2147483645..2147483650
      i247 := store r537
      r538 := array ref r535 offset r536 // @<0..8> => 0..8
      r539 := const 0                   // 0..8 => 0
      r540 := const [r539]*3            // @<0..8> => 0..8
      r538 := copy r540 count r533
      r541 := cmp r537 == r534
      cond r541 then 14 else 13
  14: r542 := wrap r535 [r510 r515 r492] // [*] : 0..8
      r543 := const 0                   // 0..1 => 0
      r544 := link package PIPEWORK.IMAGE_TYPES // P<PIPEWORK.IMAGE_TYPES>
      r545 := const 8                   // -2^31..2^31-1 => 8
      r546 := const -2147483648         // -2^31..2^31-1 => -2^31
      r547 := const 2147483647          // -2^31..2^31-1 => 2^31-1
      r548 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+411 // D<>
      r549 := debug locus PIPEWORK.IMAGE_TYPES+2853 // D<>
      r550 := const 1                   // -2^31..2^31-1 => 1
      r551 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+425 // D<>
      r552 := debug locus PIPEWORK.IMAGE_TYPES+2860 // D<>
      r553 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+439 // D<>
      r554 := debug locus PIPEWORK.IMAGE_TYPES+2867 // D<>
      r555 := debug locus WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1+453 // D<>
      r556 := debug locus PIPEWORK.IMAGE_TYPES+2874 // D<>
      r557 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r544, r545, r550, r550, r550 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r558 := record ref r557 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r559 := record ref r558 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r560 := record ref r559 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r561 := load indirect r560        // -2^31..2^31-1
      r562 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r544, r545, r550, r550, r550 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r563 := record ref r562 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r564 := record ref r563 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r565 := record ref r564 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r566 := load indirect r565        // -2^31..2^31-1
      r567 := cmp r561 > r566
      r568 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r544, r545, r550, r550, r550 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r569 := record ref r568 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r570 := record ref r569 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r571 := record ref r570 field 3   // @<-2^31..2^31-1> => -2^31..2^31-1
      r572 := load indirect r571        // -2^31..2^31-1
      r573 := fcall PIPEWORK.IMAGE_TYPES.NEW_IMAGE_STREAM_PARAM(IIII)44PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE r544, r545, r550, r550, r550 // @<PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_STREAM_PARAM_TYPE{}
      r574 := record ref r573 field 3   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_TYPE{}
      r575 := record ref r574 field 1   // @<PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}> => PIPEWORK.IMAGE_TYPES.IMAGE_SHAPE_SIDE_TYPE{}
      r576 := record ref r575 field 4   // @<-2^31..2^31-1> => -2^31..2^31-1
      r577 := load indirect r576        // -2^31..2^31-1
      r578 := sub r577 - r572           // -2^31..2^31-1 => -4294967295..4294967295
      r579 := add r578 + r550           // -2^31..2^31-1 => -4294967294..4294967296
      r580 := cast r579                 // # => -4294967294..4294967296
      r581 := const 0                   // # => 0
      r582 := cmp r580 < r581
      r583 := select r582 then r581 else r580 // #
      r584 := const 3                   // # => 3
      r585 := mul r583 * r584           // # => -6442450944..6442450941
      r586 := alloca r585               // @<0..8> => 0..8
      i246 := store r581
      cond r567 then 16 else 15
  15: r587 := load i246                 // #
      r588 := add r587 + r584           // # => -2147483645..2147483650
      i246 := store r588
      r589 := array ref r586 offset r587 // @<0..8> => 0..8
      r590 := const 0                   // 0..8 => 0
      r591 := const [r590]*3            // @<0..8> => 0..8
      r589 := copy r591 count r584
      r592 := cmp r588 == r585
      cond r592 then 16 else 15
  16: r593 := wrap r586 [r561 r566 r543] // [*] : 0..8
      r594 := index record              // @<WORK.IMAGE_STREAM_BUFFER_TEST_4_8_1X1X1_1X1X1X1.TB.I.T.IMAGE_ATRB_SIGNAL_STREAM{}>
      r595 := record ref r594 field 0   // @<[*] : 0..8> => 0..8
      r595 := store indirect r440
      r596 := record ref r594 field 1   // @<[*] : 0..8> => 0..8
      r596 := store indirect r491
      r597 := record ref r594 field 2   // @<[*] : 0..8> => 0..8
      r597 := store indirect r542
      r598 := record ref r594 field 3   // @<[*] : 0..8> => 0..8
      r598 := store indirect r593
      r599 := const 0                   // 0..8 => 0
      r600 := const [r599]              // [1] : 0..8 => 0..8
      r601 := address of r600           // @<0..8> => 0..8
      r602 := const [r599]*17           // @<0..8> => 0..8
      r603 := record ref r2 field 0     // @<[*, *, *, *] : 0..8> => 0..8
      r603 := store indirect r389

** Fatal: pointer and stored value do not have same type
[0x7fecd74100bc] ../src/util.c:692 fatal_trace
[0x7fecd748ecfb] ../src/vcode.c:3309 emit_store_indirect
[0x7fecd7482597] ../src/lower.c:2452 lower_record_aggregate.lto_priv.139
[0x7fecd7482c47] ../src/lower.c:2778 lower_aggregate.lto_priv.252
[0x7fecd7454ee7] ../src/lower.c:4775 lower_decls
[0x7fecd74539d0] ../src/lower.c:7052 lower_decls
[0x7fecd7456402] ../src/lower.c:7533 lower_concurrent_block
[0x7fecd7456465] ../src/lower.c:7543 lower_concurrent_block
[0x7fecd7456465] ../src/lower.c:7543 lower_concurrent_block
[0x7fecd7456465] ../src/lower.c:7543 lower_concurrent_block
[0x7fecd7456db3] ../src/lower.c:7565 lower_elab
[0x7fecd7456db3] ../src/lower.c:7630 lower_unit
[0x7fecd741a7e7] ../src/nvc.c:318 elaborate
[0x7fecd741744a] ../src/nvc.c:927 process_command
[0x7fecd740d726] ../src/nvc.c:1026 main

If it is a master branch, it will end normally.

shell$ nvc --version
nvc 1.7-devel (Using LLVM 7.0.0)
Copyright (C) 2011-2022  Nick Gasson
This program comes with ABSOLUTELY NO WARRANTY. This is free software, and
you are welcome to redistribute it under certain conditions. See the GNU
General Public Licence for details.
shell$ nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_4_8_1x1x1_1x1x1x1
shell$ nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_4_8_1x1x1_1x1x1x1
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=8 CHANNEL_SIZE=4 I.C=1 I.X=1 I.Y=1 O.C=1 O.D=1 O.X=1 O.Y=1
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=4 X.SIZE=1 Y.SIZE=1 
       205 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.2 C.SIZE=4 X.SIZE=2 Y.SIZE=2 
       585 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.3 C.SIZE=4 X.SIZE=3 Y.SIZE=3 
      1255 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.4 C.SIZE=4 X.SIZE=4 Y.SIZE=4 
      2295 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.5 C.SIZE=4 X.SIZE=5 Y.SIZE=5 
      3785 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.6 C.SIZE=4 X.SIZE=6 Y.SIZE=6 
      5805 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.7 C.SIZE=4 X.SIZE=7 Y.SIZE=7 
      8435 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.8 C.SIZE=4 X.SIZE=8 Y.SIZE=8 
     11755 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.9 C.SIZE=4 X.SIZE=9 Y.SIZE=9 
  ***  
  ***  ERROR REPORT test_4_8_1x1x1_1x1x1x1
  ***  
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
** Note: 15846ns+0: Assertion Note: Simulation complete(success).
    File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 274
shell$ nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_4_8_4x1x1_4x1x1x1
shell$ nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_4_8_4x1x1_4x1x1x1
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=8 CHANNEL_SIZE=4 I.C=4 I.X=1 I.Y=1 O.C=4 O.D=1 O.X=1 O.Y=1
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=4 X.SIZE=1 Y.SIZE=1 
       145 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.2 C.SIZE=4 X.SIZE=2 Y.SIZE=2 
       345 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.3 C.SIZE=4 X.SIZE=3 Y.SIZE=3 
       655 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.4 C.SIZE=4 X.SIZE=4 Y.SIZE=4 
      1095 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.5 C.SIZE=4 X.SIZE=5 Y.SIZE=5 
      1685 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.6 C.SIZE=4 X.SIZE=6 Y.SIZE=6 
      2445 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.7 C.SIZE=4 X.SIZE=7 Y.SIZE=7 
      3395 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.8 C.SIZE=4 X.SIZE=8 Y.SIZE=8 
      4555 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.9 C.SIZE=4 X.SIZE=9 Y.SIZE=9 
  ***  
  ***  ERROR REPORT test_4_8_4x1x1_4x1x1x1
  ***  
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
** Note: 5946ns+0: Assertion Note: Simulation complete(success).
    File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 274
shell$ nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_1_8_1x4x1_1x1x5x5
shell$ nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_1_8_1x4x1_1x1x5x5
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=8 CHANNEL_SIZE=1 I.C=1 I.X=4 I.Y=1 O.C=1 O.D=1 O.X=5 O.Y=5
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=1 X.SIZE=1 Y.SIZE=1 
       145 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.2 C.SIZE=1 X.SIZE=2 Y.SIZE=2 
       275 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.3 C.SIZE=1 X.SIZE=3 Y.SIZE=3 
       425 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.4 C.SIZE=1 X.SIZE=4 Y.SIZE=4 
       595 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.5 C.SIZE=1 X.SIZE=5 Y.SIZE=5 
       835 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.6 C.SIZE=1 X.SIZE=6 Y.SIZE=6 
      1155 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.7 C.SIZE=1 X.SIZE=7 Y.SIZE=7 
      1575 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.8 C.SIZE=1 X.SIZE=8 Y.SIZE=8 
      2115 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.9 C.SIZE=1 X.SIZE=9 Y.SIZE=9 
      2845 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.10 C.SIZE=1 X.SIZE=10 Y.SIZE=10 
      3735 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.11 C.SIZE=1 X.SIZE=32 Y.SIZE=32 
     13455 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.12 C.SIZE=1 X.SIZE=58 Y.SIZE=41 
     36115 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.1 C.SIZE=1 X.SIZE=50 Y.SIZE=39 
  ***  
  ***  ERROR REPORT test_1_8_1x4x1_1x1x5x5
  ***  
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
** Note: 86346ns+0: Assertion Note: Simulation complete(success).
    File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 274
shell$ nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_0_2_32x1x1_32x4x3x3
shell$ nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_0_2_32x1x1_32x4x3x3
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=2 CHANNEL_SIZE=0 I.C=32 I.X=1 I.Y=1 O.C=32 O.D=4 O.X=3 O.Y=3
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=32 X.SIZE=1 Y.SIZE=1 
       155 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.2 C.SIZE=64 X.SIZE=1 Y.SIZE=1 
       305 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.3 C.SIZE=64 X.SIZE=2 Y.SIZE=2 
       525 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.4 C.SIZE=64 X.SIZE=3 Y.SIZE=3 
       855 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.5 C.SIZE=64 X.SIZE=4 Y.SIZE=4 
      1415 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.6 C.SIZE=64 X.SIZE=5 Y.SIZE=5 
      2285 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.7 C.SIZE=64 X.SIZE=10 Y.SIZE=7 
      4795 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.8 C.SIZE=128 X.SIZE=15 Y.SIZE=11 
     16465 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.1 C.SIZE=32 X.SIZE=4 Y.SIZE=8 
     17605 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.2 C.SIZE=64 X.SIZE=4 Y.SIZE=8 
     19485 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.2.3 C.SIZE=128 X.SIZE=15 Y.SIZE=11 
  ***  
  ***  ERROR REPORT test_0_2_32x1x1_32x4x3x3
  ***  
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
** Note: 50466ns+0: Assertion Note: Simulation complete(success).
    File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 274
shell$ nvc -L ./ -M 64M --work=WORK -e  image_stream_buffer_test_0_2_32x1x1_32x4x3x3_bug1
shell$ nvc -L ./ -M 64M --work=WORK -r  image_stream_buffer_test_0_2_32x1x1_32x4x3x3_bug1
        25 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST ELEM_BITS=2 CHANNEL_SIZE=0 I.C=32 I.X=1 I.Y=1 O.C=32 O.D=4 O.X=3 O.Y=3
        35 ns| MARCHAL < IMAGE_STREAM_BUFFER_TEST.1.1 C.SIZE=32 X.SIZE=8 Y.SIZE=8 
  ***  
  ***  ERROR REPORT test_0_2_32x1x1_32x4x3x3_bug1
  ***  
  ***  [ INTAKE ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
  ***  [ OUTLET ]
  ***    Error    : 0
  ***    Mismatch : 0
  ***    Warning  : 0
  ***  
** Note: 4196ns+0: Assertion Note: Simulation complete(success).
    File ../../../src/test/vhdl/image_stream_buffer/image_stream_buffer_test_bench.vhd, Line 274
nickg commented 2 years ago

@ikwzm I recently fixed some bugs in the implementation of inout ports in bf01812fe6ca but unfortunately it caused a regression in your tests:

       415 ns|       N < AXI4_ADAPTER_TEST_4096_32_32.1.4     READ  ADDR=0x00000001, SIZE=1  , DATA_SIZE=1
##### Failure :     100485 ns (M.R) EXECUTE_WAIT Time Out!
   name       : M
   stream_name: src/test/scenarios/axi4_adapter/axi4_adapter_test_bench_4096_32_32.snr(278,35,35)
   curr_state : STATE_FLOW_MAP_END(15,MAPKEY_NULL)
   prev_state : STATE_BLOCK_MAP_IMPLICIT_END(7,MAPKEY_NULL)
   prev_state : STATE_BLOCK_SEQ_END(5,MAPKEY_NULL)
   prev_state : STATE_BLOCK_MAP_IMPLICIT_END(5,MAPKEY_NULL)
   prev_state : STATE_BLOCK_SEQ_END(3,MAPKEY_NULL)
   prev_state : STATE_BLOCK_SEQ_END(1,MAPKEY_NULL)
   prev_state : STATE_DOCUMENT(0,MAPKEY_NULL)
   text_line  :     - WAIT  : {AVALID : 1, ON : on}
               |                                  ^|
** Fatal: 100485ns+1: Assertion Failure: EXECUTE_WAIT Time Out!
   Procedure EXECUTE_ABORT [CORE_TYPE, STRING, STRING]
        File ../dummyplug/src/main/vhdl/core/core.vhd, Line 1702
   Procedure EXECUTE_WAIT [CORE_TYPE, TEXT, BOOLEAN]
        File ../dummyplug/src/main/vhdl/axi4/axi4_channel_player.vhd, Line 2140
   Procedure EXECUTE_CHANNEL_MAP_OPERATION []
        File ../dummyplug/src/main/vhdl/axi4/axi4_channel_player.vhd, Line 3286
   Procedure EXECUTE_CHANNEL_OPERATION []
        File ../dummyplug/src/main/vhdl/axi4/axi4_channel_player.vhd, Line 3319
   Process :axi4_adapter_test_bench_4096_32_32:tb:m:r:channel_d:process_d
        File ../dummyplug/src/main/vhdl/axi4/axi4_channel_player.vhd, Line 3368

I tried to debug it but I can't figure out what's wrong. Do you have any ideas? Thanks!

ikwzm commented 2 years ago

I am always grateful for your help

This happens when waiting for the ARVALID input port of AXI4_CHANNEL_PLAYTER to be '1', but not within the specified time.

This signal is driven by the ARVALID output port of DUT: AXI4_ADAPTER and reaches the ARVALID input port of R: AXI4_CHANNEL_PLAYER via the ARVALID input port of M: AXI4_SLAVE_PLAYER.

Maybe you couldn't recognize that the ARVALID output port on the DUT originally did not output '1', or the ARVALID input port on R became '1'?

nickg commented 2 years ago

Thanks, I've fixed it now!