[llvm] r248478 - Introduce target hook for optimizing register copies
Michel Dänzer via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 28 01:13:59 PDT 2015
Hi Matt,
On 24.09.2015 17:36, Matt Arsenault via llvm-commits wrote:
> Author: arsenm
> Date: Thu Sep 24 03:36:14 2015
> New Revision: 248478
>
> URL: http://llvm.org/viewvc/llvm-project?rev=248478&view=rev
> Log:
> Introduce target hook for optimizing register copies
This change broke the piglit (graphics) test
spec at glsl-1.30@execution at varying-packing-mixed-types, which can be run
manually as
.../piglit/bin/shader_runner .../piglit/tests/spec/glsl-1.30/execution/varying-packing-mixed-types.shader_test -auto
See the assertion failure output and backtrace below and the
attached failing IR generated by the test.
shader_runner: /home/daenzer/src/llvm-git/llvm/lib/CodeGen/RegisterScavenging.cpp:418: unsigned int llvm::RegScavenger::scavengeRegister(const llvm::TargetRegisterClass*, llvm::MachineBasicBlock::iterator, int): Assertion `Scavenged[SI].FrameIndex >= 0 && "Cannot scavenge register without an emergency spill slot!"' failed.
Program received signal SIGABRT, Aborted.
0x00007ffff539b107 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory.
(gdb) bt
#0 0x00007ffff539b107 in __GI_raise (sig=sig at entry=6) at ../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007ffff539c4e8 in __GI_abort () at abort.c:89
#2 0x00007ffff5394226 in __assert_fail_base (fmt=0x7ffff54cad08 "%s%s%s:%u: %s%sAssertion `%s' failed.\n%n", assertion=assertion at entry=0x7fffeea159b8 "Scavenged[SI].FrameIndex >= 0 && \"Cannot scavenge register without an emergency spill slot!\"",
file=file at entry=0x7fffeea15690 "/home/daenzer/src/llvm-git/llvm/lib/CodeGen/RegisterScavenging.cpp", line=line at entry=418,
function=function at entry=0x7fffeea15cc0 <llvm::RegScavenger::scavengeRegister(llvm::TargetRegisterClass const*, llvm::MachineBasicBlock::bundle_iterator<llvm::MachineInstr, llvm::ilist_iterator<llvm::MachineInstr> >, int)::__PRETTY_FUNCTION__> "unsigned int llvm::RegScavenger::scavengeRegister(const llvm::TargetRegisterClass*, llvm::MachineBasicBlock::iterator, int)") at assert.c:92
#3 0x00007ffff53942d2 in __GI___assert_fail (assertion=assertion at entry=0x7fffeea159b8 "Scavenged[SI].FrameIndex >= 0 && \"Cannot scavenge register without an emergency spill slot!\"",
file=file at entry=0x7fffeea15690 "/home/daenzer/src/llvm-git/llvm/lib/CodeGen/RegisterScavenging.cpp", line=line at entry=418,
function=function at entry=0x7fffeea15cc0 <llvm::RegScavenger::scavengeRegister(llvm::TargetRegisterClass const*, llvm::MachineBasicBlock::bundle_iterator<llvm::MachineInstr, llvm::ilist_iterator<llvm::MachineInstr> >, int)::__PRETTY_FUNCTION__> "unsigned int llvm::RegScavenger::scavengeRegister(const llvm::TargetRegisterClass*, llvm::MachineBasicBlock::iterator, int)") at assert.c:101
#4 0x00007fffedfa6cbe in llvm::RegScavenger::scavengeRegister (this=this at entry=0xedea50, RC=0x7fffef0a5280 <llvm::AMDGPU::VGPR_32RegClass>, I=..., SPAdj=SPAdj at entry=0) at /home/daenzer/src/llvm-git/llvm/lib/CodeGen/RegisterScavenging.cpp:417
#5 0x00007fffee239a5f in llvm::SIRegisterInfo::eliminateFrameIndex (this=0x790a20, MI=..., SPAdj=0, FIOperandNum=1, RS=0xedea50) at /home/daenzer/src/llvm-git/llvm/lib/Target/AMDGPU/SIRegisterInfo.cpp:315
#6 0x00007fffedf5b858 in (anonymous namespace)::PEI::replaceFrameIndices (BB=BB at entry=0xd72020, Fn=..., SPAdj=@0x7fffffff5490: 0, this=0xd31840, this=0xd31840) at /home/daenzer/src/llvm-git/llvm/lib/CodeGen/PrologEpilogInserter.cpp:953
#7 0x00007fffedf5f5fb in replaceFrameIndices (Fn=..., this=<optimized out>) at /home/daenzer/src/llvm-git/llvm/lib/CodeGen/PrologEpilogInserter.cpp:851
#8 (anonymous namespace)::PEI::runOnMachineFunction (this=<optimized out>, Fn=...) at /home/daenzer/src/llvm-git/llvm/lib/CodeGen/PrologEpilogInserter.cpp:221
#9 0x00007fffedb57eb9 in llvm::FPPassManager::runOnFunction (this=0xcc10a0, F=...) at /home/daenzer/src/llvm-git/llvm/lib/IR/LegacyPassManager.cpp:1528
#10 0x00007fffedb5826b in llvm::FPPassManager::runOnModule (this=0xcc10a0, M=...) at /home/daenzer/src/llvm-git/llvm/lib/IR/LegacyPassManager.cpp:1549
#11 0x00007fffedb57af4 in runOnModule (M=..., this=<optimized out>) at /home/daenzer/src/llvm-git/llvm/lib/IR/LegacyPassManager.cpp:1605
#12 llvm::legacy::PassManagerImpl::run (this=0xcc9e20, M=...) at /home/daenzer/src/llvm-git/llvm/lib/IR/LegacyPassManager.cpp:1708
#13 0x00007fffedb57cce in llvm::legacy::PassManager::run (this=this at entry=0x7fffffff5720, M=...) at /home/daenzer/src/llvm-git/llvm/lib/IR/LegacyPassManager.cpp:1739
#14 0x00007fffedc41861 in LLVMTargetMachineEmit (T=T at entry=0x78f8d0, M=M at entry=0xcbb7e0, OS=..., codegen=codegen at entry=LLVMObjectFile, ErrorMessage=ErrorMessage at entry=0x7fffffff5a00) at /home/daenzer/src/llvm-git/llvm/lib/Target/TargetMachineC.cpp:216
#15 0x00007fffedc41bec in LLVMTargetMachineEmitToMemoryBuffer (T=T at entry=0x78f8d0, M=M at entry=0xcbb7e0, codegen=codegen at entry=LLVMObjectFile, ErrorMessage=ErrorMessage at entry=0x7fffffff5a00, OutMemBuf=OutMemBuf at entry=0x7fffffff5a08)
at /home/daenzer/src/llvm-git/llvm/lib/Target/TargetMachineC.cpp:240
#16 0x00007ffff03e3d2f in radeon_llvm_compile (M=M at entry=0xcbb7e0, binary=binary at entry=0xcd5990, gpu_family=<optimized out>, dump_ir=dump_ir at entry=false, dump_asm=dump_asm at entry=false, tm=tm at entry=0x78f8d0)
at ../../../../../src/gallium/drivers/radeon/radeon_llvm_emit.c:183
#17 0x00007ffff032bc9e in si_compile_llvm (sscreen=sscreen at entry=0x6900e0, shader=shader at entry=0xcd5960, tm=tm at entry=0x78f8d0, mod=0xcbb7e0) at ../../../../../src/gallium/drivers/radeonsi/si_shader.c:3818
#18 0x00007ffff032c9a0 in si_shader_create (sscreen=0x6900e0, tm=0x78f8d0, shader=shader at entry=0xcd5960) at ../../../../../src/gallium/drivers/radeonsi/si_shader.c:4119
#19 0x00007ffff033a169 in si_shader_select (ctx=0x63d540, sel=0xcd2830) at ../../../../../src/gallium/drivers/radeonsi/si_state_shaders.c:644
#20 0x00007ffff033bdf7 in si_update_shaders (sctx=sctx at entry=0x63d540) at ../../../../../src/gallium/drivers/radeonsi/si_state_shaders.c:1494
#21 0x00007ffff0336bde in si_draw_vbo (ctx=0x63d540, info=0x7fffffffdf80) at ../../../../../src/gallium/drivers/radeonsi/si_state_draw.c:762
#22 0x00007ffff00ff231 in u_vbuf_draw_vbo (mgr=0x7fc720, info=<optimized out>) at ../../../../src/gallium/auxiliary/util/u_vbuf.c:1293
#23 0x00007fffefeaac2b in st_draw_vbo (ctx=0x79a6c0, prims=<optimized out>, nr_prims=<optimized out>, ib=0x0, index_bounds_valid=<optimized out>, min_index=0, max_index=3, tfb_vertcount=0x0, stream=0, indirect=0x0)
at ../../../src/mesa/state_tracker/st_draw.c:291
#24 0x00007fffefe6f3ca in vbo_draw_arrays (ctx=0x79a6c0, mode=5, start=0, count=4, numInstances=1, baseInstance=0) at ../../../src/mesa/vbo/vbo_exec_array.c:645
#25 0x00007ffff7ab8a8b in stub_glDrawArrays (mode=5, first=0, count=4) at tests/util/piglit-dispatch-gen.c:11317
#26 0x00007ffff7b20024 in piglit_draw_rect_from_arrays (verts=0x7fffffffe330, tex=0x0, use_patches=false) at tests/util/piglit-util-gl.c:707
#27 0x00007ffff7b20427 in piglit_draw_rect_custom (x=-1, y=-1, w=2, h=2, use_patches=false) at tests/util/piglit-util-gl.c:820
#28 0x00007ffff7b20473 in piglit_draw_rect (x=-1, y=-1, w=2, h=2) at tests/util/piglit-util-gl.c:829
#29 0x000000000040afb7 in piglit_display () at tests/shaders/shader_runner.c:2699
#30 0x00007ffff7b4413a in run_test (gl_fw=0x624c20, argc=2, argv=0x7fffffffe6f8) at tests/util/piglit-framework-gl/piglit_winsys_framework.c:79
#31 0x00007ffff7b28f47 in piglit_gl_test_run (argc=2, argv=0x7fffffffe6f8, config=0x7fffffffe5c0) at tests/util/piglit-framework-gl.c:199
#32 0x0000000000405631 in main (argc=2, argv=0x7fffffffe6f8) at tests/shaders/shader_runner.c:54
--
Earthling Michel Dänzer | http://www.amd.com
Libre software enthusiast | Mesa and X developer
-------------- next part --------------
; ModuleID = 'tgsi'
define void @main([9 x <16 x i8>] addrspace(2)* byval, [17 x <16 x i8>] addrspace(2)* byval, [17 x <4 x i32>] addrspace(2)* byval, [34 x <8 x i32>] addrspace(2)* byval, [16 x <16 x i8>] addrspace(2)* byval, i32 inreg, i32 inreg, i32, i32, i32, i32) #0 {
main_body:
%11 = getelementptr [17 x <16 x i8>], [17 x <16 x i8>] addrspace(2)* %1, i64 0, i64 0
%12 = load <16 x i8>, <16 x i8> addrspace(2)* %11, align 16, !tbaa !0
%13 = call float @llvm.SI.load.const(<16 x i8> %12, i32 0)
%14 = call float @llvm.SI.load.const(<16 x i8> %12, i32 16)
%15 = call float @llvm.SI.load.const(<16 x i8> %12, i32 32)
%16 = getelementptr [16 x <16 x i8>], [16 x <16 x i8>] addrspace(2)* %4, i64 0, i64 0
%17 = load <16 x i8>, <16 x i8> addrspace(2)* %16, align 16, !tbaa !0
%18 = add i32 %5, %7
%19 = call <4 x float> @llvm.SI.vs.load.input(<16 x i8> %17, i32 0, i32 %18)
%20 = extractelement <4 x float> %19, i32 0
%21 = extractelement <4 x float> %19, i32 1
%22 = extractelement <4 x float> %19, i32 2
%23 = extractelement <4 x float> %19, i32 3
%24 = bitcast float %15 to i32
br label %LOOP
LOOP: ; preds = %ENDIF, %main_body
%temp248.0 = phi float [ 0.000000e+00, %main_body ], [ %217, %ENDIF ]
%temp244.0 = phi float [ 0.000000e+00, %main_body ], [ %216, %ENDIF ]
%temp240.0 = phi float [ 0.000000e+00, %main_body ], [ %215, %ENDIF ]
%temp252.0 = phi float [ 0.000000e+00, %main_body ], [ %218, %ENDIF ]
%temp236.0 = phi float [ 0.000000e+00, %main_body ], [ %214, %ENDIF ]
%temp232.0 = phi float [ 0.000000e+00, %main_body ], [ %213, %ENDIF ]
%temp228.0 = phi float [ 0.000000e+00, %main_body ], [ %212, %ENDIF ]
%temp256.0 = phi float [ 0.000000e+00, %main_body ], [ %219, %ENDIF ]
%temp224.0 = phi float [ 0.000000e+00, %main_body ], [ %211, %ENDIF ]
%temp220.0 = phi float [ 0.000000e+00, %main_body ], [ %210, %ENDIF ]
%temp216.0 = phi float [ 0.000000e+00, %main_body ], [ %209, %ENDIF ]
%temp260.0 = phi float [ 0.000000e+00, %main_body ], [ %220, %ENDIF ]
%temp212.0 = phi float [ 0.000000e+00, %main_body ], [ %208, %ENDIF ]
%temp208.0 = phi float [ 0.000000e+00, %main_body ], [ %207, %ENDIF ]
%temp204.0 = phi float [ 0.000000e+00, %main_body ], [ %206, %ENDIF ]
%temp264.0 = phi float [ 0.000000e+00, %main_body ], [ %221, %ENDIF ]
%temp200.0 = phi float [ 0.000000e+00, %main_body ], [ %205, %ENDIF ]
%temp196.0 = phi float [ 0.000000e+00, %main_body ], [ %204, %ENDIF ]
%temp192.0 = phi float [ 0.000000e+00, %main_body ], [ %203, %ENDIF ]
%temp268.0 = phi float [ 0.000000e+00, %main_body ], [ %222, %ENDIF ]
%temp188.0 = phi float [ 0.000000e+00, %main_body ], [ %202, %ENDIF ]
%temp184.0 = phi float [ 0.000000e+00, %main_body ], [ %201, %ENDIF ]
%temp180.0 = phi float [ 0.000000e+00, %main_body ], [ %200, %ENDIF ]
%temp272.0 = phi float [ 0.000000e+00, %main_body ], [ %223, %ENDIF ]
%temp176.0 = phi float [ 0.000000e+00, %main_body ], [ %199, %ENDIF ]
%temp172.0 = phi float [ 0.000000e+00, %main_body ], [ %198, %ENDIF ]
%temp168.0 = phi float [ 0.000000e+00, %main_body ], [ %197, %ENDIF ]
%temp276.0 = phi float [ 0.000000e+00, %main_body ], [ %224, %ENDIF ]
%temp164.0 = phi float [ 0.000000e+00, %main_body ], [ %196, %ENDIF ]
%temp160.0 = phi float [ 0.000000e+00, %main_body ], [ %195, %ENDIF ]
%temp156.0 = phi float [ 0.000000e+00, %main_body ], [ %194, %ENDIF ]
%temp280.0 = phi float [ 0.000000e+00, %main_body ], [ %225, %ENDIF ]
%temp152.0 = phi float [ 0.000000e+00, %main_body ], [ %193, %ENDIF ]
%temp148.0 = phi float [ 0.000000e+00, %main_body ], [ %192, %ENDIF ]
%temp144.0 = phi float [ 0.000000e+00, %main_body ], [ %191, %ENDIF ]
%temp284.0 = phi float [ 0.000000e+00, %main_body ], [ %226, %ENDIF ]
%temp140.0 = phi float [ 0.000000e+00, %main_body ], [ %190, %ENDIF ]
%temp136.0 = phi float [ 0.000000e+00, %main_body ], [ %189, %ENDIF ]
%temp132.0 = phi float [ 0.000000e+00, %main_body ], [ %188, %ENDIF ]
%temp288.0 = phi float [ 0.000000e+00, %main_body ], [ %227, %ENDIF ]
%temp128.0 = phi float [ 0.000000e+00, %main_body ], [ %187, %ENDIF ]
%temp124.0 = phi float [ 0.000000e+00, %main_body ], [ %186, %ENDIF ]
%temp120.0 = phi float [ 0.000000e+00, %main_body ], [ %185, %ENDIF ]
%temp292.0 = phi float [ 0.000000e+00, %main_body ], [ %228, %ENDIF ]
%temp116.0 = phi float [ 0.000000e+00, %main_body ], [ %184, %ENDIF ]
%temp112.0 = phi float [ 0.000000e+00, %main_body ], [ %183, %ENDIF ]
%temp108.0 = phi float [ 0.000000e+00, %main_body ], [ %182, %ENDIF ]
%temp296.0 = phi float [ 0.000000e+00, %main_body ], [ %229, %ENDIF ]
%temp104.0 = phi float [ 0.000000e+00, %main_body ], [ %181, %ENDIF ]
%temp100.0 = phi float [ 0.000000e+00, %main_body ], [ %180, %ENDIF ]
%temp96.0 = phi float [ 0.000000e+00, %main_body ], [ %179, %ENDIF ]
%temp300.0 = phi float [ 0.000000e+00, %main_body ], [ %230, %ENDIF ]
%temp92.0 = phi float [ 0.000000e+00, %main_body ], [ %178, %ENDIF ]
%temp88.0 = phi float [ 0.000000e+00, %main_body ], [ %177, %ENDIF ]
%temp84.0 = phi float [ 0.000000e+00, %main_body ], [ %176, %ENDIF ]
%temp304.0 = phi float [ 0.000000e+00, %main_body ], [ %231, %ENDIF ]
%temp80.0 = phi float [ 0.000000e+00, %main_body ], [ %175, %ENDIF ]
%temp76.0 = phi float [ 0.000000e+00, %main_body ], [ %174, %ENDIF ]
%temp72.0 = phi float [ 0.000000e+00, %main_body ], [ %173, %ENDIF ]
%temp308.0 = phi float [ 0.000000e+00, %main_body ], [ %232, %ENDIF ]
%temp68.0 = phi float [ 0.000000e+00, %main_body ], [ %172, %ENDIF ]
%temp64.0 = phi float [ 0.000000e+00, %main_body ], [ %171, %ENDIF ]
%temp60.0 = phi float [ 0.000000e+00, %main_body ], [ %170, %ENDIF ]
%temp312.0 = phi float [ 0.000000e+00, %main_body ], [ %233, %ENDIF ]
%temp56.0 = phi float [ 0.000000e+00, %main_body ], [ %169, %ENDIF ]
%temp52.0 = phi float [ 0.000000e+00, %main_body ], [ %168, %ENDIF ]
%temp48.0 = phi float [ 0.000000e+00, %main_body ], [ %167, %ENDIF ]
%temp316.0 = phi float [ 0.000000e+00, %main_body ], [ %234, %ENDIF ]
%temp44.0 = phi float [ 0.000000e+00, %main_body ], [ %166, %ENDIF ]
%temp40.0 = phi float [ 0.000000e+00, %main_body ], [ %165, %ENDIF ]
%temp36.0 = phi float [ 0.000000e+00, %main_body ], [ %164, %ENDIF ]
%temp320.0 = phi float [ 0.000000e+00, %main_body ], [ %235, %ENDIF ]
%temp32.0 = phi float [ 0.000000e+00, %main_body ], [ %163, %ENDIF ]
%temp28.0 = phi float [ 0.000000e+00, %main_body ], [ %162, %ENDIF ]
%temp24.0 = phi float [ 0.000000e+00, %main_body ], [ %161, %ENDIF ]
%temp324.0 = phi float [ 0.000000e+00, %main_body ], [ %236, %ENDIF ]
%temp20.0 = phi float [ 0.000000e+00, %main_body ], [ %160, %ENDIF ]
%temp16.0 = phi float [ 0.000000e+00, %main_body ], [ %159, %ENDIF ]
%temp12.0 = phi float [ 0.000000e+00, %main_body ], [ %158, %ENDIF ]
%temp328.0 = phi float [ 0.000000e+00, %main_body ], [ %237, %ENDIF ]
%temp332.0 = phi float [ 0.000000e+00, %main_body ], [ %238, %ENDIF ]
%temp336.0 = phi float [ 0.000000e+00, %main_body ], [ %239, %ENDIF ]
%temp4.0 = phi float [ 0.000000e+00, %main_body ], [ %286, %ENDIF ]
%temp340.0 = phi float [ 0.000000e+00, %main_body ], [ %240, %ENDIF ]
%temp344.0 = phi float [ 0.000000e+00, %main_body ], [ %241, %ENDIF ]
%temp348.0 = phi float [ 0.000000e+00, %main_body ], [ %242, %ENDIF ]
%temp352.0 = phi float [ 0.000000e+00, %main_body ], [ %243, %ENDIF ]
%temp356.0 = phi float [ 0.000000e+00, %main_body ], [ %244, %ENDIF ]
%temp360.0 = phi float [ 0.000000e+00, %main_body ], [ %245, %ENDIF ]
%temp364.0 = phi float [ 0.000000e+00, %main_body ], [ %246, %ENDIF ]
%temp368.0 = phi float [ 0.000000e+00, %main_body ], [ %247, %ENDIF ]
%temp372.0 = phi float [ 0.000000e+00, %main_body ], [ %248, %ENDIF ]
%temp376.0 = phi float [ 0.000000e+00, %main_body ], [ %249, %ENDIF ]
%temp380.0 = phi float [ 0.000000e+00, %main_body ], [ %250, %ENDIF ]
%temp384.0 = phi float [ 0.000000e+00, %main_body ], [ %251, %ENDIF ]
%temp388.0 = phi float [ 0.000000e+00, %main_body ], [ %252, %ENDIF ]
%temp392.0 = phi float [ 0.000000e+00, %main_body ], [ %253, %ENDIF ]
%temp396.0 = phi float [ 0.000000e+00, %main_body ], [ %254, %ENDIF ]
%temp400.0 = phi float [ 0.000000e+00, %main_body ], [ %255, %ENDIF ]
%temp404.0 = phi float [ 0.000000e+00, %main_body ], [ %256, %ENDIF ]
%temp408.0 = phi float [ 0.000000e+00, %main_body ], [ %257, %ENDIF ]
%temp412.0 = phi float [ 0.000000e+00, %main_body ], [ %258, %ENDIF ]
%temp416.0 = phi float [ 0.000000e+00, %main_body ], [ %259, %ENDIF ]
%temp420.0 = phi float [ 0.000000e+00, %main_body ], [ %260, %ENDIF ]
%temp424.0 = phi float [ 0.000000e+00, %main_body ], [ %261, %ENDIF ]
%temp428.0 = phi float [ 0.000000e+00, %main_body ], [ %262, %ENDIF ]
%temp432.0 = phi float [ 0.000000e+00, %main_body ], [ %263, %ENDIF ]
%temp436.0 = phi float [ 0.000000e+00, %main_body ], [ %264, %ENDIF ]
%temp440.0 = phi float [ 0.000000e+00, %main_body ], [ %265, %ENDIF ]
%temp444.0 = phi float [ 0.000000e+00, %main_body ], [ %266, %ENDIF ]
%temp448.0 = phi float [ 0.000000e+00, %main_body ], [ %267, %ENDIF ]
%temp452.0 = phi float [ 0.000000e+00, %main_body ], [ %268, %ENDIF ]
%temp456.0 = phi float [ 0.000000e+00, %main_body ], [ %269, %ENDIF ]
%temp460.0 = phi float [ 0.000000e+00, %main_body ], [ %270, %ENDIF ]
%temp464.0 = phi float [ 0.000000e+00, %main_body ], [ %271, %ENDIF ]
%temp468.0 = phi float [ 0.000000e+00, %main_body ], [ %272, %ENDIF ]
%temp472.0 = phi float [ 0.000000e+00, %main_body ], [ %273, %ENDIF ]
%temp476.0 = phi float [ 0.000000e+00, %main_body ], [ %274, %ENDIF ]
%temp480.0 = phi float [ 0.000000e+00, %main_body ], [ %275, %ENDIF ]
%temp484.0 = phi float [ 0.000000e+00, %main_body ], [ %276, %ENDIF ]
%temp488.0 = phi float [ 0.000000e+00, %main_body ], [ %277, %ENDIF ]
%temp492.0 = phi float [ 0.000000e+00, %main_body ], [ %278, %ENDIF ]
%temp496.0 = phi float [ 0.000000e+00, %main_body ], [ %279, %ENDIF ]
%temp500.0 = phi float [ 0.000000e+00, %main_body ], [ %280, %ENDIF ]
%temp504.0 = phi float [ 0.000000e+00, %main_body ], [ %281, %ENDIF ]
%temp508.0 = phi float [ 0.000000e+00, %main_body ], [ %282, %ENDIF ]
%temp512.0 = phi float [ 0.000000e+00, %main_body ], [ %283, %ENDIF ]
%25 = bitcast float %temp4.0 to i32
%26 = icmp sgt i32 %25, 125
br i1 %26, label %IF, label %ENDIF
IF: ; preds = %LOOP
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 32, i32 0, float %13, float %temp12.0, float %temp16.0, float %temp20.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 33, i32 0, float %temp24.0, float %temp28.0, float %temp32.0, float %temp36.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 34, i32 0, float %temp40.0, float %temp44.0, float %temp48.0, float %temp52.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 35, i32 0, float %temp56.0, float %temp60.0, float %temp64.0, float %temp68.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 36, i32 0, float %temp72.0, float %temp76.0, float %temp80.0, float %temp84.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 37, i32 0, float %temp88.0, float %temp92.0, float %temp96.0, float %temp100.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 38, i32 0, float %temp104.0, float %temp108.0, float %temp112.0, float %temp116.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 39, i32 0, float %temp120.0, float %temp124.0, float %temp128.0, float %temp132.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 40, i32 0, float %temp136.0, float %temp140.0, float %temp144.0, float %temp148.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 41, i32 0, float %temp152.0, float %temp156.0, float %temp160.0, float %temp164.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 42, i32 0, float %temp168.0, float %temp172.0, float %temp176.0, float %temp180.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 43, i32 0, float %temp184.0, float %temp188.0, float %temp192.0, float %temp196.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 44, i32 0, float %temp200.0, float %temp204.0, float %temp208.0, float %temp212.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 45, i32 0, float %temp216.0, float %temp220.0, float %temp224.0, float %temp228.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 46, i32 0, float %temp232.0, float %temp236.0, float %temp240.0, float %temp244.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 47, i32 0, float %temp248.0, float %temp252.0, float %temp256.0, float %temp260.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 48, i32 0, float %temp264.0, float %temp268.0, float %temp272.0, float %temp276.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 49, i32 0, float %temp280.0, float %temp284.0, float %temp288.0, float %temp292.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 50, i32 0, float %temp296.0, float %temp300.0, float %temp304.0, float %temp308.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 51, i32 0, float %temp312.0, float %temp316.0, float %temp320.0, float %temp324.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 52, i32 0, float %temp328.0, float %temp332.0, float %temp336.0, float %temp340.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 53, i32 0, float %temp344.0, float %temp348.0, float %temp352.0, float %temp356.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 54, i32 0, float %temp360.0, float %temp364.0, float %temp368.0, float %temp372.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 55, i32 0, float %temp376.0, float %temp380.0, float %temp384.0, float %temp388.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 56, i32 0, float %temp392.0, float %temp396.0, float %temp400.0, float %temp404.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 57, i32 0, float %temp408.0, float %temp412.0, float %temp416.0, float %temp420.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 58, i32 0, float %temp424.0, float %temp428.0, float %temp432.0, float %temp436.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 59, i32 0, float %temp440.0, float %temp444.0, float %temp448.0, float %temp452.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 60, i32 0, float %temp456.0, float %temp460.0, float %temp464.0, float %temp468.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 61, i32 0, float %temp472.0, float %temp476.0, float %temp480.0, float %temp484.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 62, i32 0, float %temp488.0, float %temp492.0, float %temp496.0, float %temp500.0)
call void @llvm.SI.export(i32 15, i32 0, i32 0, i32 63, i32 0, float %temp504.0, float %temp508.0, float %temp512.0, float %14)
call void @llvm.SI.export(i32 15, i32 0, i32 1, i32 12, i32 0, float %20, float %21, float %22, float %23)
ret void
ENDIF: ; preds = %LOOP
%27 = bitcast float %temp4.0 to i32
%28 = bitcast float %temp4.0 to i32
%29 = add i32 %24, %28
%30 = bitcast i32 %29 to float
%31 = insertelement <126 x float> undef, float %temp12.0, i32 0
%32 = insertelement <126 x float> %31, float %temp16.0, i32 1
%33 = insertelement <126 x float> %32, float %temp20.0, i32 2
%34 = insertelement <126 x float> %33, float %temp24.0, i32 3
%35 = insertelement <126 x float> %34, float %temp28.0, i32 4
%36 = insertelement <126 x float> %35, float %temp32.0, i32 5
%37 = insertelement <126 x float> %36, float %temp36.0, i32 6
%38 = insertelement <126 x float> %37, float %temp40.0, i32 7
%39 = insertelement <126 x float> %38, float %temp44.0, i32 8
%40 = insertelement <126 x float> %39, float %temp48.0, i32 9
%41 = insertelement <126 x float> %40, float %temp52.0, i32 10
%42 = insertelement <126 x float> %41, float %temp56.0, i32 11
%43 = insertelement <126 x float> %42, float %temp60.0, i32 12
%44 = insertelement <126 x float> %43, float %temp64.0, i32 13
%45 = insertelement <126 x float> %44, float %temp68.0, i32 14
%46 = insertelement <126 x float> %45, float %temp72.0, i32 15
%47 = insertelement <126 x float> %46, float %temp76.0, i32 16
%48 = insertelement <126 x float> %47, float %temp80.0, i32 17
%49 = insertelement <126 x float> %48, float %temp84.0, i32 18
%50 = insertelement <126 x float> %49, float %temp88.0, i32 19
%51 = insertelement <126 x float> %50, float %temp92.0, i32 20
%52 = insertelement <126 x float> %51, float %temp96.0, i32 21
%53 = insertelement <126 x float> %52, float %temp100.0, i32 22
%54 = insertelement <126 x float> %53, float %temp104.0, i32 23
%55 = insertelement <126 x float> %54, float %temp108.0, i32 24
%56 = insertelement <126 x float> %55, float %temp112.0, i32 25
%57 = insertelement <126 x float> %56, float %temp116.0, i32 26
%58 = insertelement <126 x float> %57, float %temp120.0, i32 27
%59 = insertelement <126 x float> %58, float %temp124.0, i32 28
%60 = insertelement <126 x float> %59, float %temp128.0, i32 29
%61 = insertelement <126 x float> %60, float %temp132.0, i32 30
%62 = insertelement <126 x float> %61, float %temp136.0, i32 31
%63 = insertelement <126 x float> %62, float %temp140.0, i32 32
%64 = insertelement <126 x float> %63, float %temp144.0, i32 33
%65 = insertelement <126 x float> %64, float %temp148.0, i32 34
%66 = insertelement <126 x float> %65, float %temp152.0, i32 35
%67 = insertelement <126 x float> %66, float %temp156.0, i32 36
%68 = insertelement <126 x float> %67, float %temp160.0, i32 37
%69 = insertelement <126 x float> %68, float %temp164.0, i32 38
%70 = insertelement <126 x float> %69, float %temp168.0, i32 39
%71 = insertelement <126 x float> %70, float %temp172.0, i32 40
%72 = insertelement <126 x float> %71, float %temp176.0, i32 41
%73 = insertelement <126 x float> %72, float %temp180.0, i32 42
%74 = insertelement <126 x float> %73, float %temp184.0, i32 43
%75 = insertelement <126 x float> %74, float %temp188.0, i32 44
%76 = insertelement <126 x float> %75, float %temp192.0, i32 45
%77 = insertelement <126 x float> %76, float %temp196.0, i32 46
%78 = insertelement <126 x float> %77, float %temp200.0, i32 47
%79 = insertelement <126 x float> %78, float %temp204.0, i32 48
%80 = insertelement <126 x float> %79, float %temp208.0, i32 49
%81 = insertelement <126 x float> %80, float %temp212.0, i32 50
%82 = insertelement <126 x float> %81, float %temp216.0, i32 51
%83 = insertelement <126 x float> %82, float %temp220.0, i32 52
%84 = insertelement <126 x float> %83, float %temp224.0, i32 53
%85 = insertelement <126 x float> %84, float %temp228.0, i32 54
%86 = insertelement <126 x float> %85, float %temp232.0, i32 55
%87 = insertelement <126 x float> %86, float %temp236.0, i32 56
%88 = insertelement <126 x float> %87, float %temp240.0, i32 57
%89 = insertelement <126 x float> %88, float %temp244.0, i32 58
%90 = insertelement <126 x float> %89, float %temp248.0, i32 59
%91 = insertelement <126 x float> %90, float %temp252.0, i32 60
%92 = insertelement <126 x float> %91, float %temp256.0, i32 61
%93 = insertelement <126 x float> %92, float %temp260.0, i32 62
%94 = insertelement <126 x float> %93, float %temp264.0, i32 63
%95 = insertelement <126 x float> %94, float %temp268.0, i32 64
%96 = insertelement <126 x float> %95, float %temp272.0, i32 65
%97 = insertelement <126 x float> %96, float %temp276.0, i32 66
%98 = insertelement <126 x float> %97, float %temp280.0, i32 67
%99 = insertelement <126 x float> %98, float %temp284.0, i32 68
%100 = insertelement <126 x float> %99, float %temp288.0, i32 69
%101 = insertelement <126 x float> %100, float %temp292.0, i32 70
%102 = insertelement <126 x float> %101, float %temp296.0, i32 71
%103 = insertelement <126 x float> %102, float %temp300.0, i32 72
%104 = insertelement <126 x float> %103, float %temp304.0, i32 73
%105 = insertelement <126 x float> %104, float %temp308.0, i32 74
%106 = insertelement <126 x float> %105, float %temp312.0, i32 75
%107 = insertelement <126 x float> %106, float %temp316.0, i32 76
%108 = insertelement <126 x float> %107, float %temp320.0, i32 77
%109 = insertelement <126 x float> %108, float %temp324.0, i32 78
%110 = insertelement <126 x float> %109, float %temp328.0, i32 79
%111 = insertelement <126 x float> %110, float %temp332.0, i32 80
%112 = insertelement <126 x float> %111, float %temp336.0, i32 81
%113 = insertelement <126 x float> %112, float %temp340.0, i32 82
%114 = insertelement <126 x float> %113, float %temp344.0, i32 83
%115 = insertelement <126 x float> %114, float %temp348.0, i32 84
%116 = insertelement <126 x float> %115, float %temp352.0, i32 85
%117 = insertelement <126 x float> %116, float %temp356.0, i32 86
%118 = insertelement <126 x float> %117, float %temp360.0, i32 87
%119 = insertelement <126 x float> %118, float %temp364.0, i32 88
%120 = insertelement <126 x float> %119, float %temp368.0, i32 89
%121 = insertelement <126 x float> %120, float %temp372.0, i32 90
%122 = insertelement <126 x float> %121, float %temp376.0, i32 91
%123 = insertelement <126 x float> %122, float %temp380.0, i32 92
%124 = insertelement <126 x float> %123, float %temp384.0, i32 93
%125 = insertelement <126 x float> %124, float %temp388.0, i32 94
%126 = insertelement <126 x float> %125, float %temp392.0, i32 95
%127 = insertelement <126 x float> %126, float %temp396.0, i32 96
%128 = insertelement <126 x float> %127, float %temp400.0, i32 97
%129 = insertelement <126 x float> %128, float %temp404.0, i32 98
%130 = insertelement <126 x float> %129, float %temp408.0, i32 99
%131 = insertelement <126 x float> %130, float %temp412.0, i32 100
%132 = insertelement <126 x float> %131, float %temp416.0, i32 101
%133 = insertelement <126 x float> %132, float %temp420.0, i32 102
%134 = insertelement <126 x float> %133, float %temp424.0, i32 103
%135 = insertelement <126 x float> %134, float %temp428.0, i32 104
%136 = insertelement <126 x float> %135, float %temp432.0, i32 105
%137 = insertelement <126 x float> %136, float %temp436.0, i32 106
%138 = insertelement <126 x float> %137, float %temp440.0, i32 107
%139 = insertelement <126 x float> %138, float %temp444.0, i32 108
%140 = insertelement <126 x float> %139, float %temp448.0, i32 109
%141 = insertelement <126 x float> %140, float %temp452.0, i32 110
%142 = insertelement <126 x float> %141, float %temp456.0, i32 111
%143 = insertelement <126 x float> %142, float %temp460.0, i32 112
%144 = insertelement <126 x float> %143, float %temp464.0, i32 113
%145 = insertelement <126 x float> %144, float %temp468.0, i32 114
%146 = insertelement <126 x float> %145, float %temp472.0, i32 115
%147 = insertelement <126 x float> %146, float %temp476.0, i32 116
%148 = insertelement <126 x float> %147, float %temp480.0, i32 117
%149 = insertelement <126 x float> %148, float %temp484.0, i32 118
%150 = insertelement <126 x float> %149, float %temp488.0, i32 119
%151 = insertelement <126 x float> %150, float %temp492.0, i32 120
%152 = insertelement <126 x float> %151, float %temp496.0, i32 121
%153 = insertelement <126 x float> %152, float %temp500.0, i32 122
%154 = insertelement <126 x float> %153, float %temp504.0, i32 123
%155 = insertelement <126 x float> %154, float %temp508.0, i32 124
%156 = insertelement <126 x float> %155, float %temp512.0, i32 125
%157 = insertelement <126 x float> %156, float %30, i32 %27
%158 = extractelement <126 x float> %157, i32 0
%159 = extractelement <126 x float> %157, i32 1
%160 = extractelement <126 x float> %157, i32 2
%161 = extractelement <126 x float> %157, i32 3
%162 = extractelement <126 x float> %157, i32 4
%163 = extractelement <126 x float> %157, i32 5
%164 = extractelement <126 x float> %157, i32 6
%165 = extractelement <126 x float> %157, i32 7
%166 = extractelement <126 x float> %157, i32 8
%167 = extractelement <126 x float> %157, i32 9
%168 = extractelement <126 x float> %157, i32 10
%169 = extractelement <126 x float> %157, i32 11
%170 = extractelement <126 x float> %157, i32 12
%171 = extractelement <126 x float> %157, i32 13
%172 = extractelement <126 x float> %157, i32 14
%173 = extractelement <126 x float> %157, i32 15
%174 = extractelement <126 x float> %157, i32 16
%175 = extractelement <126 x float> %157, i32 17
%176 = extractelement <126 x float> %157, i32 18
%177 = extractelement <126 x float> %157, i32 19
%178 = extractelement <126 x float> %157, i32 20
%179 = extractelement <126 x float> %157, i32 21
%180 = extractelement <126 x float> %157, i32 22
%181 = extractelement <126 x float> %157, i32 23
%182 = extractelement <126 x float> %157, i32 24
%183 = extractelement <126 x float> %157, i32 25
%184 = extractelement <126 x float> %157, i32 26
%185 = extractelement <126 x float> %157, i32 27
%186 = extractelement <126 x float> %157, i32 28
%187 = extractelement <126 x float> %157, i32 29
%188 = extractelement <126 x float> %157, i32 30
%189 = extractelement <126 x float> %157, i32 31
%190 = extractelement <126 x float> %157, i32 32
%191 = extractelement <126 x float> %157, i32 33
%192 = extractelement <126 x float> %157, i32 34
%193 = extractelement <126 x float> %157, i32 35
%194 = extractelement <126 x float> %157, i32 36
%195 = extractelement <126 x float> %157, i32 37
%196 = extractelement <126 x float> %157, i32 38
%197 = extractelement <126 x float> %157, i32 39
%198 = extractelement <126 x float> %157, i32 40
%199 = extractelement <126 x float> %157, i32 41
%200 = extractelement <126 x float> %157, i32 42
%201 = extractelement <126 x float> %157, i32 43
%202 = extractelement <126 x float> %157, i32 44
%203 = extractelement <126 x float> %157, i32 45
%204 = extractelement <126 x float> %157, i32 46
%205 = extractelement <126 x float> %157, i32 47
%206 = extractelement <126 x float> %157, i32 48
%207 = extractelement <126 x float> %157, i32 49
%208 = extractelement <126 x float> %157, i32 50
%209 = extractelement <126 x float> %157, i32 51
%210 = extractelement <126 x float> %157, i32 52
%211 = extractelement <126 x float> %157, i32 53
%212 = extractelement <126 x float> %157, i32 54
%213 = extractelement <126 x float> %157, i32 55
%214 = extractelement <126 x float> %157, i32 56
%215 = extractelement <126 x float> %157, i32 57
%216 = extractelement <126 x float> %157, i32 58
%217 = extractelement <126 x float> %157, i32 59
%218 = extractelement <126 x float> %157, i32 60
%219 = extractelement <126 x float> %157, i32 61
%220 = extractelement <126 x float> %157, i32 62
%221 = extractelement <126 x float> %157, i32 63
%222 = extractelement <126 x float> %157, i32 64
%223 = extractelement <126 x float> %157, i32 65
%224 = extractelement <126 x float> %157, i32 66
%225 = extractelement <126 x float> %157, i32 67
%226 = extractelement <126 x float> %157, i32 68
%227 = extractelement <126 x float> %157, i32 69
%228 = extractelement <126 x float> %157, i32 70
%229 = extractelement <126 x float> %157, i32 71
%230 = extractelement <126 x float> %157, i32 72
%231 = extractelement <126 x float> %157, i32 73
%232 = extractelement <126 x float> %157, i32 74
%233 = extractelement <126 x float> %157, i32 75
%234 = extractelement <126 x float> %157, i32 76
%235 = extractelement <126 x float> %157, i32 77
%236 = extractelement <126 x float> %157, i32 78
%237 = extractelement <126 x float> %157, i32 79
%238 = extractelement <126 x float> %157, i32 80
%239 = extractelement <126 x float> %157, i32 81
%240 = extractelement <126 x float> %157, i32 82
%241 = extractelement <126 x float> %157, i32 83
%242 = extractelement <126 x float> %157, i32 84
%243 = extractelement <126 x float> %157, i32 85
%244 = extractelement <126 x float> %157, i32 86
%245 = extractelement <126 x float> %157, i32 87
%246 = extractelement <126 x float> %157, i32 88
%247 = extractelement <126 x float> %157, i32 89
%248 = extractelement <126 x float> %157, i32 90
%249 = extractelement <126 x float> %157, i32 91
%250 = extractelement <126 x float> %157, i32 92
%251 = extractelement <126 x float> %157, i32 93
%252 = extractelement <126 x float> %157, i32 94
%253 = extractelement <126 x float> %157, i32 95
%254 = extractelement <126 x float> %157, i32 96
%255 = extractelement <126 x float> %157, i32 97
%256 = extractelement <126 x float> %157, i32 98
%257 = extractelement <126 x float> %157, i32 99
%258 = extractelement <126 x float> %157, i32 100
%259 = extractelement <126 x float> %157, i32 101
%260 = extractelement <126 x float> %157, i32 102
%261 = extractelement <126 x float> %157, i32 103
%262 = extractelement <126 x float> %157, i32 104
%263 = extractelement <126 x float> %157, i32 105
%264 = extractelement <126 x float> %157, i32 106
%265 = extractelement <126 x float> %157, i32 107
%266 = extractelement <126 x float> %157, i32 108
%267 = extractelement <126 x float> %157, i32 109
%268 = extractelement <126 x float> %157, i32 110
%269 = extractelement <126 x float> %157, i32 111
%270 = extractelement <126 x float> %157, i32 112
%271 = extractelement <126 x float> %157, i32 113
%272 = extractelement <126 x float> %157, i32 114
%273 = extractelement <126 x float> %157, i32 115
%274 = extractelement <126 x float> %157, i32 116
%275 = extractelement <126 x float> %157, i32 117
%276 = extractelement <126 x float> %157, i32 118
%277 = extractelement <126 x float> %157, i32 119
%278 = extractelement <126 x float> %157, i32 120
%279 = extractelement <126 x float> %157, i32 121
%280 = extractelement <126 x float> %157, i32 122
%281 = extractelement <126 x float> %157, i32 123
%282 = extractelement <126 x float> %157, i32 124
%283 = extractelement <126 x float> %157, i32 125
%284 = bitcast float %temp4.0 to i32
%285 = add i32 %284, 1
%286 = bitcast i32 %285 to float
br label %LOOP
}
; Function Attrs: nounwind readnone
declare float @llvm.SI.load.const(<16 x i8>, i32) #1
; Function Attrs: nounwind readnone
declare <4 x float> @llvm.SI.vs.load.input(<16 x i8>, i32, i32) #1
declare void @llvm.SI.export(i32, i32, i32, i32, i32, float, float, float, float)
attributes #0 = { "ShaderType"="1" "enable-no-nans-fp-math"="true" }
attributes #1 = { nounwind readnone }
!0 = !{!"const", null, i32 1}
More information about the llvm-commits
mailing list