Announcement

Collapse
No announcement yet.

R600 Gallium3D LLVM Shader Compiler Hooked Up

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #21
    Originally posted by Pontostroy View Post
    I use trank LLVM-3.2_svn20120421

    Lightmark warning message:
    warning: failed to translate tgsi opcode F2I to LLVM
    warning: failed to translate tgsi opcode F2I to LLVM
    et:qw
    pure virtual method called
    terminate called recursively
    terminate called recursively
    pure virtual method called
    terminate called recursively
    pure virtual method called
    Segmentation fault
    Compiling mesa git master, along with LLVM git release_31 branch, got me this errors:
    /gpgpu-test is where I will put new LLVM and MESA, so I will not break existing environment. Any clues?

    mklib: Making Linux shared library: r600_dri.so.tmp
    g++ -g -O2 -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -g -O2 -fPIC -DUSE_X86_64_ASM -D_GNU_SOURCE -DPTHREADS -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_LLVM=0x0301 -fvisibility=hidden -o r600_dri.so.test ../../../../src/mesa/drivers/dri/common/dri_test.o r600_dri.so.tmp -L../../../../lib -Wl,-R/gpgpu-test/lib/dri -ldricore -lglsl -ldrm -lexpat -lm -lpthread -ldl -ldrm_radeon -L/gpgpu-test/lib -ldl -lpthread;
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::SelectionDAGISel'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetInstrInfoImpl'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MachineModuleInfoImpl'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetPassConfig'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MCAsmInfo'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetELFWriterInfo'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetSubtargetInfo'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::LLVMTargetMachine'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MachineFunctionInfo'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetFrameLowering'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MachineFunctionPass'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetIntrinsicInfo'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetRegisterInfo'
    r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetLowering'

    Comment


    • #22
      Originally posted by Drago View Post
      Compiling mesa git master, along with LLVM git release_31 branch, got me this errors:
      /gpgpu-test is where I will put new LLVM and MESA, so I will not break existing environment. Any clues?

      mklib: Making Linux shared library: r600_dri.so.tmp
      g++ -g -O2 -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -g -O2 -fPIC -DUSE_X86_64_ASM -D_GNU_SOURCE -DPTHREADS -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -DHAVE_LLVM=0x0301 -fvisibility=hidden -o r600_dri.so.test ../../../../src/mesa/drivers/dri/common/dri_test.o r600_dri.so.tmp -L../../../../lib -Wl,-R/gpgpu-test/lib/dri -ldricore -lglsl -ldrm -lexpat -lm -lpthread -ldl -ldrm_radeon -L/gpgpu-test/lib -ldl -lpthread;
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::SelectionDAGISel'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetInstrInfoImpl'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MachineModuleInfoImpl'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetPassConfig'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MCAsmInfo'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetELFWriterInfo'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetSubtargetInfo'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::LLVMTargetMachine'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MachineFunctionInfo'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetFrameLowering'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::MachineFunctionPass'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetIntrinsicInfo'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetRegisterInfo'
      r600_dri.so.tmp: undefined reference to `typeinfo for llvm::TargetLowering'
      I use shared llvm and --with-llvm-shared-libs for mesa

      Code:
      make[3]: Entering directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/targets/dri-r600'
      gcc -c -I. -I../../../../src/mesa/drivers/dri/common -Iserver -I../../../../include -I../../../../include/GL/internal -I../../../../src/mapi -I../../../../src/gallium/include -I../../../../src/gallium/auxiliary -I../../../../src/gallium/drivers -I../../../../src/gallium/winsys -I../../../../src/mesa -I../../../../src/mesa/main -I../../../../src/mesa/math -I../../../../src/mesa/transform -I../../../../src/mesa/shader -I../../../../src/mesa/swrast -I../../../../src/mesa/swrast_setup -I../../../../src/egl/main -I../../../../src/egl/drivers/dri -I/usr/include/libdrm    -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DIN_DRI_DRIVER -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -D__STDC_CONSTANT_MACROS -DHAVE_LLVM=0x0302 -fvisibility=hidden -DGALLIUM_RBUG -DGALLIUM_TRACE -DGALLIUM_NOOP target.c -o target.o
      /bin/sh ../../../../bin/mklib -o r600_dri.so.tmp -noprefix -linker 'g++' -ldflags ' -L/usr/lib  -lpthread -ldl -lm ' \
      	target.o ../../../../src/mesa/drivers/dri/common/utils.o ../../../../src/mesa/drivers/dri/common/dri_util.o ../../../../src/mesa/drivers/dri/common/xmlconfig.o   ../../../../src/gallium/drivers/r600/libr600.a ../../../../src/gallium/state_trackers/dri/drm/libdridrm.a ../../../../src/gallium/winsys/radeon/drm/libradeonwinsys.a ../../../../src/gallium/drivers/trace/libtrace.a ../../../../src/gallium/drivers/rbug/librbug.a ../../../../src/gallium/drivers/noop/libnoop.a \
                      -Wl,--start-group ../../../../src/mesa/libmesagallium.a ../../../../src/gallium/auxiliary/libgallium.a -Wl,--end-group \
                        -L../../../../lib -Wl,-R/usr/lib/dri -ldricore -lglsl  -ldrm   -lexpat -lm -lpthread -ldl -ldrm_radeon -lLLVM-3.2svn
      mklib: Making Linux shared library:  r600_dri.so.tmp
      g++ -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DIN_DRI_DRIVER -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -D__STDC_CONSTANT_MACROS -DHAVE_LLVM=0x0302 -fvisibility=hidden -o r600_dri.so.test ../../../../src/mesa/drivers/dri/common/dri_test.o r600_dri.so.tmp  -L../../../../lib -Wl,-R/usr/lib/dri -ldricore -lglsl  -ldrm   -lexpat -lm -lpthread -ldl -ldrm_radeon  -L/usr/lib  -lpthread -ldl -lm ;
      mv -f r600_dri.so.tmp r600_dri.so
      /usr/bin/install -c r600_dri.so ../../../../lib/gallium

      Comment


      • #23
        This paper might be interesting for people involved in OpenCL for single precision GPUs. Its about using single precision math in a GPU to get a close answer and then using double precision in the CPU to correct for the error. They were able to get full double precision accuracy with a 2X speed up over CPU alone.


        So I guess someone could write a wrapper doing the same thing for some of the OpenCL double precision functions.

        Comment


        • #24
          Originally posted by Pontostroy View Post
          I use shared llvm and --with-llvm-shared-libs for mesa

          Code:
          make[3]: Entering directory `/home/abuild/rpmbuild/BUILD/mesa/src/gallium/targets/dri-r600'
          gcc -c -I. -I../../../../src/mesa/drivers/dri/common -Iserver -I../../../../include -I../../../../include/GL/internal -I../../../../src/mapi -I../../../../src/gallium/include -I../../../../src/gallium/auxiliary -I../../../../src/gallium/drivers -I../../../../src/gallium/winsys -I../../../../src/mesa -I../../../../src/mesa/main -I../../../../src/mesa/math -I../../../../src/mesa/transform -I../../../../src/mesa/shader -I../../../../src/mesa/swrast -I../../../../src/mesa/swrast_setup -I../../../../src/egl/main -I../../../../src/egl/drivers/dri -I/usr/include/libdrm    -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DIN_DRI_DRIVER -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -D__STDC_CONSTANT_MACROS -DHAVE_LLVM=0x0302 -fvisibility=hidden -DGALLIUM_RBUG -DGALLIUM_TRACE -DGALLIUM_NOOP target.c -o target.o
          /bin/sh ../../../../bin/mklib -o r600_dri.so.tmp -noprefix -linker 'g++' -ldflags ' -L/usr/lib  -lpthread -ldl -lm ' \
          	target.o ../../../../src/mesa/drivers/dri/common/utils.o ../../../../src/mesa/drivers/dri/common/dri_util.o ../../../../src/mesa/drivers/dri/common/xmlconfig.o   ../../../../src/gallium/drivers/r600/libr600.a ../../../../src/gallium/state_trackers/dri/drm/libdridrm.a ../../../../src/gallium/winsys/radeon/drm/libradeonwinsys.a ../../../../src/gallium/drivers/trace/libtrace.a ../../../../src/gallium/drivers/rbug/librbug.a ../../../../src/gallium/drivers/noop/libnoop.a \
                          -Wl,--start-group ../../../../src/mesa/libmesagallium.a ../../../../src/gallium/auxiliary/libgallium.a -Wl,--end-group \
                            -L../../../../lib -Wl,-R/usr/lib/dri -ldricore -lglsl  -ldrm   -lexpat -lm -lpthread -ldl -ldrm_radeon -lLLVM-3.2svn
          mklib: Making Linux shared library:  r600_dri.so.tmp
          g++ -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g -Wall -std=c99 -Werror=implicit-function-declaration -Werror=missing-prototypes -fno-strict-aliasing -fno-builtin-memcmp -fomit-frame-pointer -fmessage-length=0 -O2 -Wall -D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables -fasynchronous-unwind-tables -g  -fPIC  -DUSE_X86_ASM -DUSE_MMX_ASM -DUSE_3DNOW_ASM -DUSE_SSE_ASM -D_GNU_SOURCE -DPTHREADS -DTEXTURE_FLOAT_ENABLED -DHAVE_POSIX_MEMALIGN -DIN_DRI_DRIVER -DUSE_XCB -DGLX_INDIRECT_RENDERING -DGLX_DIRECT_RENDERING -DUSE_EXTERNAL_DXTN_LIB=1 -DIN_DRI_DRIVER -DHAVE_ALIAS -DHAVE_MINCORE -DHAVE_LIBUDEV -D__STDC_CONSTANT_MACROS -DHAVE_LLVM=0x0302 -fvisibility=hidden -o r600_dri.so.test ../../../../src/mesa/drivers/dri/common/dri_test.o r600_dri.so.tmp  -L../../../../lib -Wl,-R/usr/lib/dri -ldricore -lglsl  -ldrm   -lexpat -lm -lpthread -ldl -ldrm_radeon  -L/usr/lib  -lpthread -ldl -lm ;
          mv -f r600_dri.so.tmp r600_dri.so
          /usr/bin/install -c r600_dri.so ../../../../lib/gallium
          I didn't provided `--with-llvm-shared-libs` to Mesa, but this type information tells something else. Any other flags you may passed to LLVM or MESA. Enabling RTTI or something else?

          Comment


          • #25
            Originally posted by Qaridarium

            thats because apple let nvidia make the openCL spec this means nvidia build all nvidia spezific buffers into the spec this means the hd2900 do not have 2 buffers. the hd4000 do have both buffers but one of them are to smal/wrong implemenation because of wrong information from nvidia.

            And a whole lot of other stupid and misspelled shit.
            If that where the case Apple would be backing CUDA, not OpenCL. CUDA is Nvidia exclusive, had Nvidia written the OpenCL spec they'd have done all they could to gimp it so that everyone would ignore in completely and use CUDA which only works on Nvidia hardware.

            Comment


            • #26
              So I checked llvm out from http://llvm.org/svn/llvm-project/llv...ELEASE_31/rc1/ and compiled mesa with it.

              The first thing I tested was kwin "opengl2 shaders". With luck it seems to work but mostly it looks like this:

              and crashes plasma.

              struntrally cannot start a map:
              Code:
              LLVM ERROR: Cannot select: target intrinsic %llvm.AMDGPU.kill
              xonotic... well....


              Maybe it would be good to only whitelist cards where it at least kind of works.

              I tried on HD 6550M.
              Last edited by ChrisXY; 25 April 2012, 07:18 AM.

              Comment


              • #27
                Originally posted by Pontostroy View Post
                I use trank LLVM-3.2_svn20120421

                Lightmark warning message:
                warning: failed to translate tgsi opcode F2I to LLVM
                warning: failed to translate tgsi opcode F2I to LLVM
                et:qw
                pure virtual method called
                terminate called recursively
                terminate called recursively
                pure virtual method called
                terminate called recursively
                pure virtual method called
                Segmentation fault
                F2I is the TGSI opcode for converting floats to integers, and it seems that the plumbing to convert floats to ints is missing in the TGSI->LLVM code.

                I've managed to get an INCORRECT workaround in place by editing:
                ${mesa_root}/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c

                Around, line 570, add the following:
                bld_base->op_actions[TGSI_OPCODE_F2I].emit = lp_build_tgsi_intrinsic;
                bld_base->op_actions[TGSI_OPCODE_F2I].intr_name = "llvm.AMDIL.f32.i32.flr.";

                As I said, this is an incorrect solution. This uses the floor rounding method combined with the float -> int conversion, whereas GLSL should truncate/round-to-zero. There is an FTOI instruction defined in the AMD IL, but I haven't figured out what is needed to output an instruction instead of an intrinsic, and more importantly, where the rest of the conversions are stored. Unfortunately, I won't be able to continue looking at this until after work today.

                Even though the solution is incorrect, it increases my piglit test passes from 5700 to ~7400 (of 8000+ total).

                Comment


                • #28
                  Originally posted by ChrisXY View Post
                  So I checked llvm out from http://llvm.org/svn/llvm-project/llv...ELEASE_31/rc1/ and compiled mesa with it.

                  <snip>

                  struntrally cannot start a map:
                  Code:
                  LLVM ERROR: Cannot select: target intrinsic %llvm.AMDGPU.kill
                  <snip>
                  How new was the mesa you compiled? This committ looks like it might fix this issue:

                  Comment


                  • #29
                    Originally posted by madbiologist View Post
                    How new was the mesa you compiled? This committ looks like it might fix this issue:

                    http://cgit.freedesktop.org/mesa/mes...9750e194759d89
                    Very new. To be sure I pulled and recompiled it again and it still fails. "R600_LLVM=0 stuntrally" works.

                    Comment


                    • #30
                      Originally posted by Veerappan View Post
                      F2I is the TGSI opcode for converting floats to integers, and it seems that the plumbing to convert floats to ints is missing in the TGSI->LLVM code.

                      I've managed to get an INCORRECT workaround in place by editing:
                      ${mesa_root}/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c

                      Around, line 570, add the following:
                      bld_base->op_actions[TGSI_OPCODE_F2I].emit = lp_build_tgsi_intrinsic;
                      bld_base->op_actions[TGSI_OPCODE_F2I].intr_name = "llvm.AMDIL.f32.i32.flr.";

                      As I said, this is an incorrect solution. This uses the floor rounding method combined with the float -> int conversion, whereas GLSL should truncate/round-to-zero. There is an FTOI instruction defined in the AMD IL, but I haven't figured out what is needed to output an instruction instead of an intrinsic, and more importantly, where the rest of the conversions are stored. Unfortunately, I won't be able to continue looking at this until after work today.

                      Even though the solution is incorrect, it increases my piglit test passes from 5700 to ~7400 (of 8000+ total).
                      in Unigine heaven and lightmark i got:
                      Code:
                      Warning: R600 LLVM backend does not support indirect adressing.  Falling back to TGSI backend.                                                                                                                    
                      Warning: R600 LLVM backend does not support indirect adressing.  Falling back to TGSI backend.                                                                                                                    
                      Warning: R600 LLVM backend does not support indirect adressing.  Falling back to TGSI backend.                                                                                                                    
                      LLVM ERROR: Not supported instr: CALL <ga:@llvm.AMDIL.f32.i32.flr.>, %R1<imp-use>, %R2<imp-use,kill>, %R3<imp-use,kill>, %R4<imp-use,kill>, %R5<imp-use,kill>, %R6<imp-use,kill>, %R7<imp-use,kill>, %R8<imp-use,kill>, %R9<imp-use,kill>, %R10<imp-use,kill>, %R11<imp-use,kill>, %R12<imp-use,kill>, %R13<imp-use,kill>, %R14<imp-use,kill>, %R15<imp-use,kill>, %R16<imp-use,kill>, %R17<imp-use,kill>, %R18<imp-use,kill>, %R19<imp-use,kill>, %R20<imp-use,kill>, %R21<imp-use,kill>, %R22<imp-use,kill>, %R23<imp-use,kill>, %R24<imp-use,kill>, %R25<imp-use,kill>, %R26<imp-use,kill>, %R27<imp-use,kill>, %R28<imp-use,kill>, %R29<imp-use,kill>, %R30<imp-use,kill>, %R31<imp-use,kill>, %R32<imp-use,kill>, %R33<imp-use,kill>, %R34<imp-use,kill>, %R35<imp-use,kill>, %R36<imp-use,kill>, %R37<imp-use,kill>, %R38<imp-use,kill>, %R39<imp-use,kill>, %R40<imp-use,kill>, %R41<imp-use,kill>, %R42<imp-use,kill>, %R43<imp-use,kill>, %R44<imp-use,kill>, %R45<imp-use,kill>, %R46<imp-use,kill>, %R47<imp-use,kill>, %R48<imp-use,kill>, %R49<imp-use,kill>, %R50<imp-use,kill>, %R51<imp-use,kill>, %R52<imp-use,kill>, %R53<imp-use,kill>, %R54<imp-use,kill>, %R55<imp-use,kill>, %R56<imp-use,kill>, %R57<imp-use,kill>, %R58<imp-use,kill>, %R59<imp-use,kill>, %R60<imp-use,kill>, %R61<imp-use,kill>, %R62<imp-use,kill>, %R63<imp-use,kill>, %R64<imp-use,kill>, %R65<imp-use,kill>, %R66<imp-use,kill>, %R67<imp-use,kill>, %R68<imp-use,kill>, %R69<imp-use,kill>, %R70<imp-use,kill>, %R71<imp-use,kill>, %R72<imp-use,kill>, %R73<imp-use,kill>, %R74<imp-use,kill>, %R75<imp-use,kill>, %R76<imp-use,kill>, %R77<imp-use,kill>, %R78<imp-use,kill>, %R79<imp-use,kill>, %R80<imp-use,kill>, %R81<imp-use,kill>, %R82<imp-use,kill>, %R83<imp-use,kill>, %R84<imp-use,kill>, %R85<imp-use,kill>, %R86<imp-use,kill>, %R87<imp-use,kill>, %R88<imp-use,kill>, %R89<imp-use,kill>, %R90<imp-use,kill>, %R91<imp-use,kill>, %R92<imp-use,kill>, %R93<imp-use,kill>, %R94<imp-use,kill>, %R95<imp-use,kill>, %R96<imp-use,kill>, %R97<imp-use,kill>, %R98<imp-use,kill>, %R99<imp-use,kill>, %R100<imp-use,kill>, %R101<imp-use,kill>, %R102<imp-use,kill>, %R103<imp-use,kill>, %R104<imp-use,kill>, %R105<imp-use,kill>, %R106<imp-use,kill>, %R107<imp-use,kill>, %R108<imp-use,kill>, %R109<imp-use,kill>, %R1<imp-use>, %R2<imp-use>, %R3<imp-use>, %R4<imp-use>, %R5<imp-use>, %R6<imp-use>, %R7<imp-use>, %R8<imp-use>, %R9<imp-use>, %R10<imp-use>, %R11<imp-use>, %R12<imp-use>, %R13<imp-use>, %R14<imp-use>, %R15<imp-use>, %R16<imp-use>, %R17<imp-use>, %R18<imp-use>, %R19<imp-use>, %R20<imp-use>, %R21<imp-use>, %R22<imp-use>, %R23<imp-use>, %R24<imp-use>, %R25<imp-use>, %R26<imp-use>, %R27<imp-use>, %R28<imp-use>, %R29<imp-use>, %R30<imp-use>, %R31<imp-use>, %R32<imp-use>, %R33<imp-use>, %R34<imp-use>, %R35<imp-use>, %R36<imp-use>, %R37<imp-use>, %R38<imp-use>, %R39<imp-use>, %R40<imp-use>, %R41<imp-use>, %R42<imp-use>, %R43<imp-use>, %R44<imp-use>, %R45<imp-use>, %R46<imp-use>, %R47<imp-use>, %R48<imp-use>, %R49<imp-use>, %R50<imp-use>, %R51<imp-use>, %R52<imp-use>, %R53<imp-use>, %R54<imp-use>, %R55<imp-use>, %R56<imp-use>, %R57<imp-use>, %R58<imp-use>, %R59<imp-use>, %R60<imp-use>, %R61<imp-use>, %R62<imp-use>, %R63<imp-use>, %R64<imp-use>, %R65<imp-use>, %R66<imp-use>, %R67<imp-use>, %R68<imp-use>, %R69<imp-use>, %R70<imp-use>, %R71<imp-use>, %R72<imp-use>, %R73<imp-use>, %R74<imp-use>, %R75<imp-use>, %R76<imp-use>, %R77<imp-use>, %R78<imp-use>, %R79<imp-use>, %R80<imp-use>, %R81<imp-use>, %R82<imp-use>, %R83<imp-use>, %R84<imp-use>, %R85<imp-use>, %R86<imp-use>, %R87<imp-use>, %R88<imp-use>, %R89<imp-use>, %R90<imp-use>, %R91<imp-use>, %R92<imp-use>, %R93<imp-use>, %R94<imp-use>, %R95<imp-use>, %R96<imp-use>, %R97<imp-use>, %R98<imp-use>, %R99<imp-use>, %R100<imp-use>, %R101<imp-use>, %R102<imp-use>, %R103<imp-use>, %R104<imp-use>, %R105<imp-use>, %R106<imp-use>, %R107<imp-use>, %R108<imp-use>, %R109<imp-use>, ...

                      Comment

                      Working...
                      X