[Mesa-dev] [Bug 51366] New: [llvmpipe] src/gallium/auxiliary/draw/draw_llvm.c:1475:draw_llvm_generate: Assertion `0' failed.
bugzilla-daemon at freedesktop.org
bugzilla-daemon at freedesktop.org
Sat Jun 23 13:25:04 PDT 2012
https://bugs.freedesktop.org/show_bug.cgi?id=51366
Bug #: 51366
Summary: [llvmpipe]
src/gallium/auxiliary/draw/draw_llvm.c:1475:draw_llvm_
generate: Assertion `0' failed.
Classification: Unclassified
Product: Mesa
Version: git
Platform: x86-64 (AMD64)
OS/Version: Linux (All)
Status: NEW
Severity: critical
Priority: medium
Component: Other
AssignedTo: mesa-dev at lists.freedesktop.org
ReportedBy: vlee at freedesktop.org
CC: galibert at pobox.com
mesa: 78ac9af58021b7cc649c35fda112f61c98b31766 (master)
Run piglit draw-non-instanced test on llvmpipe.
$ ./bin/shader_runner
tests/spec/arb_draw_instanced/execution/draw-non-instanced.shader_test
Stored value type does not match pointer operand type!
store <4 x i32> %134, <4 x float>* %temp
<4 x float>Broken module found, verification continues.
define i32 @draw_llvm_shader({ float*, float*, [14 x [4 x float]]*, float*, [16
x { i32, i32, i32, i32, i32, [16 x i32], [16 x i32], [16 x i8*], float, float,
float, [4 x float] }] }* noalias %context, { i32, [4 x float], [4 x float], [3
x [4 x float]] }* noalias %io, i8** noalias %vbuffers, i32 %start, i32 %count,
i32 %stride, { i32, i32, i8*, i8* }* noalias %vb, i32 %instance_id) {
entry:
%temp44 = alloca <4 x float>
%temp43 = alloca <4 x float>
%temp42 = alloca <4 x float>
%temp41 = alloca <4 x float>
%temp40 = alloca <4 x float>
%temp39 = alloca <4 x float>
%temp38 = alloca <4 x float>
%temp = alloca <4 x float>
%output37 = alloca <4 x float>
%output36 = alloca <4 x float>
%output35 = alloca <4 x float>
%output34 = alloca <4 x float>
%output33 = alloca <4 x float>
%output32 = alloca <4 x float>
%output31 = alloca <4 x float>
%output = alloca <4 x float>
%looplimiter = alloca i32
%loop_counter = alloca i32
%0 = alloca i32
store i32 0, i32* %0
store i32 0, i32* %0
%1 = add i32 %start, %count
%fetch_max = sub i32 %1, 1
store i32 0, i32* %loop_counter
store i32 %start, i32* %loop_counter
br label %loop_begin
loop_begin: ; preds = %loop_begin, %entry
%2 = load i32* %loop_counter
%3 = sub i32 %2, %start
%4 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }* %io,
i32 %3
%5 = add i32 %2, 0
%6 = icmp slt i32 %5, %fetch_max
%7 = sext i1 %6 to i32
%8 = trunc i32 %7 to i1
%9 = select i1 %8, i32 %5, i32 %fetch_max
%10 = insertelement <4 x i32> zeroinitializer, i32 %9, i32 0
%11 = getelementptr { i32, i32, i8*, i8* }* %vb, i32 0
%12 = getelementptr i8** %vbuffers, i64 0
%.stride_ptr = getelementptr { i32, i32, i8*, i8* }* %11, i32 0, i32 0
%.stride = load i32* %.stride_ptr
%.buffer_offset_ptr = getelementptr { i32, i32, i8*, i8* }* %11, i32 0, i32 1
%.buffer_offset = load i32* %.buffer_offset_ptr
%13 = mul i32 %.stride, %9
%vbuffer = load i8** %12
%14 = add i32 %13, %.buffer_offset
%15 = add i32 %14, 0
%16 = getelementptr i8* %vbuffer, i32 %15
%src_tmp = getelementptr i8* %16, i32 0
%17 = bitcast i8* %src_tmp to float*
%18 = load float* %17
%19 = insertelement <4 x float> zeroinitializer, float %18, i32 0
%src_tmp1 = getelementptr i8* %16, i32 4
%20 = bitcast i8* %src_tmp1 to float*
%21 = load float* %20
%22 = insertelement <4 x float> %19, float %21, i32 1
%src_tmp2 = getelementptr i8* %16, i32 8
%23 = bitcast i8* %src_tmp2 to float*
%24 = load float* %23
%25 = insertelement <4 x float> %22, float %24, i32 2
%src_tmp3 = getelementptr i8* %16, i32 12
%26 = bitcast i8* %src_tmp3 to float*
%27 = load float* %26
%28 = insertelement <4 x float> %25, float %27, i32 3
%29 = add i32 %2, 1
%30 = icmp slt i32 %29, %fetch_max
%31 = sext i1 %30 to i32
%32 = trunc i32 %31 to i1
%33 = select i1 %32, i32 %29, i32 %fetch_max
%34 = insertelement <4 x i32> %10, i32 %33, i32 1
%35 = getelementptr { i32, i32, i8*, i8* }* %vb, i32 0
%36 = getelementptr i8** %vbuffers, i64 0
%.stride_ptr4 = getelementptr { i32, i32, i8*, i8* }* %35, i32 0, i32 0
%.stride5 = load i32* %.stride_ptr4
%.buffer_offset_ptr6 = getelementptr { i32, i32, i8*, i8* }* %35, i32 0, i32
1
%.buffer_offset7 = load i32* %.buffer_offset_ptr6
%37 = mul i32 %.stride5, %33
%vbuffer8 = load i8** %36
%38 = add i32 %37, %.buffer_offset7
%39 = add i32 %38, 0
%40 = getelementptr i8* %vbuffer8, i32 %39
%src_tmp9 = getelementptr i8* %40, i32 0
%41 = bitcast i8* %src_tmp9 to float*
%42 = load float* %41
%43 = insertelement <4 x float> zeroinitializer, float %42, i32 0
%src_tmp10 = getelementptr i8* %40, i32 4
%44 = bitcast i8* %src_tmp10 to float*
%45 = load float* %44
%46 = insertelement <4 x float> %43, float %45, i32 1
%src_tmp11 = getelementptr i8* %40, i32 8
%47 = bitcast i8* %src_tmp11 to float*
%48 = load float* %47
%49 = insertelement <4 x float> %46, float %48, i32 2
%src_tmp12 = getelementptr i8* %40, i32 12
%50 = bitcast i8* %src_tmp12 to float*
%51 = load float* %50
%52 = insertelement <4 x float> %49, float %51, i32 3
%53 = add i32 %2, 2
%54 = icmp slt i32 %53, %fetch_max
%55 = sext i1 %54 to i32
%56 = trunc i32 %55 to i1
%57 = select i1 %56, i32 %53, i32 %fetch_max
%58 = insertelement <4 x i32> %34, i32 %57, i32 2
%59 = getelementptr { i32, i32, i8*, i8* }* %vb, i32 0
%60 = getelementptr i8** %vbuffers, i64 0
%.stride_ptr13 = getelementptr { i32, i32, i8*, i8* }* %59, i32 0, i32 0
%.stride14 = load i32* %.stride_ptr13
%.buffer_offset_ptr15 = getelementptr { i32, i32, i8*, i8* }* %59, i32 0, i32
1
%.buffer_offset16 = load i32* %.buffer_offset_ptr15
%61 = mul i32 %.stride14, %57
%vbuffer17 = load i8** %60
%62 = add i32 %61, %.buffer_offset16
%63 = add i32 %62, 0
%64 = getelementptr i8* %vbuffer17, i32 %63
%src_tmp18 = getelementptr i8* %64, i32 0
%65 = bitcast i8* %src_tmp18 to float*
%66 = load float* %65
%67 = insertelement <4 x float> zeroinitializer, float %66, i32 0
%src_tmp19 = getelementptr i8* %64, i32 4
%68 = bitcast i8* %src_tmp19 to float*
%69 = load float* %68
%70 = insertelement <4 x float> %67, float %69, i32 1
%src_tmp20 = getelementptr i8* %64, i32 8
%71 = bitcast i8* %src_tmp20 to float*
%72 = load float* %71
%73 = insertelement <4 x float> %70, float %72, i32 2
%src_tmp21 = getelementptr i8* %64, i32 12
%74 = bitcast i8* %src_tmp21 to float*
%75 = load float* %74
%76 = insertelement <4 x float> %73, float %75, i32 3
%77 = add i32 %2, 3
%78 = icmp slt i32 %77, %fetch_max
%79 = sext i1 %78 to i32
%80 = trunc i32 %79 to i1
%81 = select i1 %80, i32 %77, i32 %fetch_max
%82 = insertelement <4 x i32> %58, i32 %81, i32 3
%83 = getelementptr { i32, i32, i8*, i8* }* %vb, i32 0
%84 = getelementptr i8** %vbuffers, i64 0
%.stride_ptr22 = getelementptr { i32, i32, i8*, i8* }* %83, i32 0, i32 0
%.stride23 = load i32* %.stride_ptr22
%.buffer_offset_ptr24 = getelementptr { i32, i32, i8*, i8* }* %83, i32 0, i32
1
%.buffer_offset25 = load i32* %.buffer_offset_ptr24
%85 = mul i32 %.stride23, %81
%vbuffer26 = load i8** %84
%86 = add i32 %85, %.buffer_offset25
%87 = add i32 %86, 0
%88 = getelementptr i8* %vbuffer26, i32 %87
%src_tmp27 = getelementptr i8* %88, i32 0
%89 = bitcast i8* %src_tmp27 to float*
%90 = load float* %89
%91 = insertelement <4 x float> zeroinitializer, float %90, i32 0
%src_tmp28 = getelementptr i8* %88, i32 4
%92 = bitcast i8* %src_tmp28 to float*
%93 = load float* %92
%94 = insertelement <4 x float> %91, float %93, i32 1
%src_tmp29 = getelementptr i8* %88, i32 8
%95 = bitcast i8* %src_tmp29 to float*
%96 = load float* %95
%97 = insertelement <4 x float> %94, float %96, i32 2
%src_tmp30 = getelementptr i8* %88, i32 12
%98 = bitcast i8* %src_tmp30 to float*
%99 = load float* %98
%100 = insertelement <4 x float> %97, float %99, i32 3
%101 = extractelement <4 x float> %28, i32 0
%102 = insertelement <4 x float> zeroinitializer, float %101, i32 0
%103 = extractelement <4 x float> %52, i32 0
%104 = insertelement <4 x float> %102, float %103, i32 1
%105 = extractelement <4 x float> %76, i32 0
%106 = insertelement <4 x float> %104, float %105, i32 2
%107 = extractelement <4 x float> %100, i32 0
%108 = insertelement <4 x float> %106, float %107, i32 3
%109 = extractelement <4 x float> %28, i32 1
%110 = insertelement <4 x float> zeroinitializer, float %109, i32 0
%111 = extractelement <4 x float> %52, i32 1
%112 = insertelement <4 x float> %110, float %111, i32 1
%113 = extractelement <4 x float> %76, i32 1
%114 = insertelement <4 x float> %112, float %113, i32 2
%115 = extractelement <4 x float> %100, i32 1
%116 = insertelement <4 x float> %114, float %115, i32 3
%117 = extractelement <4 x float> %28, i32 2
%118 = insertelement <4 x float> zeroinitializer, float %117, i32 0
%119 = extractelement <4 x float> %52, i32 2
%120 = insertelement <4 x float> %118, float %119, i32 1
%121 = extractelement <4 x float> %76, i32 2
%122 = insertelement <4 x float> %120, float %121, i32 2
%123 = extractelement <4 x float> %100, i32 2
%124 = insertelement <4 x float> %122, float %123, i32 3
%125 = extractelement <4 x float> %28, i32 3
%126 = insertelement <4 x float> zeroinitializer, float %125, i32 0
%127 = extractelement <4 x float> %52, i32 3
%128 = insertelement <4 x float> %126, float %127, i32 1
%129 = extractelement <4 x float> %76, i32 3
%130 = insertelement <4 x float> %128, float %129, i32 2
%131 = extractelement <4 x float> %100, i32 3
%132 = insertelement <4 x float> %130, float %131, i32 3
%context.vs_constants_ptr = getelementptr { float*, float*, [14 x [4 x
float]]*, float*, [16 x { i32, i32, i32, i32, i32, [16 x i32], [16 x i32], [16
x i8*], float, float, float, [4 x float] }] }* %context, i32 0, i32 0
%context.vs_constants = load float** %context.vs_constants_ptr
store i32 0, i32* %looplimiter
store i32 65535, i32* %looplimiter
store <4 x float> zeroinitializer, <4 x float>* %output
store <4 x float> zeroinitializer, <4 x float>* %output31
store <4 x float> zeroinitializer, <4 x float>* %output32
store <4 x float> zeroinitializer, <4 x float>* %output33
store <4 x float> zeroinitializer, <4 x float>* %output34
store <4 x float> zeroinitializer, <4 x float>* %output35
store <4 x float> zeroinitializer, <4 x float>* %output36
store <4 x float> zeroinitializer, <4 x float>* %output37
store <4 x float> zeroinitializer, <4 x float>* %temp
store <4 x float> zeroinitializer, <4 x float>* %temp38
store <4 x float> zeroinitializer, <4 x float>* %temp39
store <4 x float> zeroinitializer, <4 x float>* %temp40
store <4 x float> zeroinitializer, <4 x float>* %temp41
store <4 x float> zeroinitializer, <4 x float>* %temp42
store <4 x float> zeroinitializer, <4 x float>* %temp43
store <4 x float> zeroinitializer, <4 x float>* %temp44
store <4 x float> zeroinitializer, <4 x float>* %temp39
store <4 x float> <float 1.000000e+00, float 1.000000e+00, float
1.000000e+00, float 1.000000e+00>, <4 x float>* %temp40
%133 = insertelement <4 x i32> undef, i32 %instance_id, i32 0
%134 = shufflevector <4 x i32> %133, <4 x i32> undef, <4 x i32>
zeroinitializer
store <4 x i32> %134, <4 x float>* %temp
%135 = insertelement <4 x i32> undef, i32 %instance_id, i32 0
%136 = shufflevector <4 x i32> %135, <4 x i32> undef, <4 x i32>
zeroinitializer
%137 = bitcast <4 x i32> %136 to <4 x float>
%138 = fsub <4 x float> <float -0.000000e+00, float -0.000000e+00, float
-0.000000e+00, float -0.000000e+00>, %137
%139 = fadd <4 x float> <float 1.000000e+00, float 1.000000e+00, float
1.000000e+00, float 1.000000e+00>, %138
store <4 x float> %139, <4 x float>* %temp41
%140 = load <4 x float>* %temp41
store <4 x float> %140, <4 x float>* %temp38
%141 = getelementptr float* %context.vs_constants, i32 0
%142 = load float* %141
%143 = insertelement <4 x float> undef, float %142, i32 0
%144 = shufflevector <4 x float> %143, <4 x float> undef, <4 x i32>
zeroinitializer
%145 = fmul <4 x float> %144, %108
%146 = getelementptr float* %context.vs_constants, i32 1
%147 = load float* %146
%148 = insertelement <4 x float> undef, float %147, i32 0
%149 = shufflevector <4 x float> %148, <4 x float> undef, <4 x i32>
zeroinitializer
%150 = fmul <4 x float> %149, %108
%151 = getelementptr float* %context.vs_constants, i32 2
%152 = load float* %151
%153 = insertelement <4 x float> undef, float %152, i32 0
%154 = shufflevector <4 x float> %153, <4 x float> undef, <4 x i32>
zeroinitializer
%155 = fmul <4 x float> %154, %108
%156 = getelementptr float* %context.vs_constants, i32 3
%157 = load float* %156
%158 = insertelement <4 x float> undef, float %157, i32 0
%159 = shufflevector <4 x float> %158, <4 x float> undef, <4 x i32>
zeroinitializer
%160 = fmul <4 x float> %159, %108
store <4 x float> %145, <4 x float>* %temp41
store <4 x float> %150, <4 x float>* %temp42
store <4 x float> %155, <4 x float>* %temp43
store <4 x float> %160, <4 x float>* %temp44
%161 = getelementptr float* %context.vs_constants, i32 4
%162 = load float* %161
%163 = insertelement <4 x float> undef, float %162, i32 0
%164 = shufflevector <4 x float> %163, <4 x float> undef, <4 x i32>
zeroinitializer
%165 = load <4 x float>* %temp41
%166 = fmul <4 x float> %164, %116
%167 = fadd <4 x float> %166, %165
%168 = getelementptr float* %context.vs_constants, i32 5
%169 = load float* %168
%170 = insertelement <4 x float> undef, float %169, i32 0
%171 = shufflevector <4 x float> %170, <4 x float> undef, <4 x i32>
zeroinitializer
%172 = load <4 x float>* %temp42
%173 = fmul <4 x float> %171, %116
%174 = fadd <4 x float> %173, %172
%175 = getelementptr float* %context.vs_constants, i32 6
%176 = load float* %175
%177 = insertelement <4 x float> undef, float %176, i32 0
%178 = shufflevector <4 x float> %177, <4 x float> undef, <4 x i32>
zeroinitializer
%179 = load <4 x float>* %temp43
%180 = fmul <4 x float> %178, %116
%181 = fadd <4 x float> %180, %179
%182 = getelementptr float* %context.vs_constants, i32 7
%183 = load float* %182
%184 = insertelement <4 x float> undef, float %183, i32 0
%185 = shufflevector <4 x float> %184, <4 x float> undef, <4 x i32>
zeroinitializer
%186 = load <4 x float>* %temp44
%187 = fmul <4 x float> %185, %116
%188 = fadd <4 x float> %187, %186
store <4 x float> %167, <4 x float>* %temp41
store <4 x float> %174, <4 x float>* %temp42
store <4 x float> %181, <4 x float>* %temp43
store <4 x float> %188, <4 x float>* %temp44
%189 = getelementptr float* %context.vs_constants, i32 8
%190 = load float* %189
%191 = insertelement <4 x float> undef, float %190, i32 0
%192 = shufflevector <4 x float> %191, <4 x float> undef, <4 x i32>
zeroinitializer
%193 = load <4 x float>* %temp41
%194 = fmul <4 x float> %192, %124
%195 = fadd <4 x float> %194, %193
%196 = getelementptr float* %context.vs_constants, i32 9
%197 = load float* %196
%198 = insertelement <4 x float> undef, float %197, i32 0
%199 = shufflevector <4 x float> %198, <4 x float> undef, <4 x i32>
zeroinitializer
%200 = load <4 x float>* %temp42
%201 = fmul <4 x float> %199, %124
%202 = fadd <4 x float> %201, %200
%203 = getelementptr float* %context.vs_constants, i32 10
%204 = load float* %203
%205 = insertelement <4 x float> undef, float %204, i32 0
%206 = shufflevector <4 x float> %205, <4 x float> undef, <4 x i32>
zeroinitializer
%207 = load <4 x float>* %temp43
%208 = fmul <4 x float> %206, %124
%209 = fadd <4 x float> %208, %207
%210 = getelementptr float* %context.vs_constants, i32 11
%211 = load float* %210
%212 = insertelement <4 x float> undef, float %211, i32 0
%213 = shufflevector <4 x float> %212, <4 x float> undef, <4 x i32>
zeroinitializer
%214 = load <4 x float>* %temp44
%215 = fmul <4 x float> %213, %124
%216 = fadd <4 x float> %215, %214
store <4 x float> %195, <4 x float>* %temp41
store <4 x float> %202, <4 x float>* %temp42
store <4 x float> %209, <4 x float>* %temp43
store <4 x float> %216, <4 x float>* %temp44
%217 = getelementptr float* %context.vs_constants, i32 12
%218 = load float* %217
%219 = insertelement <4 x float> undef, float %218, i32 0
%220 = shufflevector <4 x float> %219, <4 x float> undef, <4 x i32>
zeroinitializer
%221 = load <4 x float>* %temp41
%222 = fmul <4 x float> %220, %132
%223 = fadd <4 x float> %222, %221
%224 = getelementptr float* %context.vs_constants, i32 13
%225 = load float* %224
%226 = insertelement <4 x float> undef, float %225, i32 0
%227 = shufflevector <4 x float> %226, <4 x float> undef, <4 x i32>
zeroinitializer
%228 = load <4 x float>* %temp42
%229 = fmul <4 x float> %227, %132
%230 = fadd <4 x float> %229, %228
%231 = getelementptr float* %context.vs_constants, i32 14
%232 = load float* %231
%233 = insertelement <4 x float> undef, float %232, i32 0
%234 = shufflevector <4 x float> %233, <4 x float> undef, <4 x i32>
zeroinitializer
%235 = load <4 x float>* %temp43
%236 = fmul <4 x float> %234, %132
%237 = fadd <4 x float> %236, %235
%238 = getelementptr float* %context.vs_constants, i32 15
%239 = load float* %238
%240 = insertelement <4 x float> undef, float %239, i32 0
%241 = shufflevector <4 x float> %240, <4 x float> undef, <4 x i32>
zeroinitializer
%242 = load <4 x float>* %temp44
%243 = fmul <4 x float> %241, %132
%244 = fadd <4 x float> %243, %242
store <4 x float> %223, <4 x float>* %temp41
store <4 x float> %230, <4 x float>* %temp42
store <4 x float> %237, <4 x float>* %temp43
store <4 x float> %244, <4 x float>* %temp44
%245 = load <4 x float>* %temp
%246 = load <4 x float>* %temp38
%247 = load <4 x float>* %temp39
%248 = load <4 x float>* %temp40
store <4 x float> %245, <4 x float>* %output34
store <4 x float> %246, <4 x float>* %output35
store <4 x float> %247, <4 x float>* %output36
store <4 x float> %248, <4 x float>* %output37
%249 = load <4 x float>* %temp41
%250 = load <4 x float>* %temp42
%251 = load <4 x float>* %temp43
%252 = load <4 x float>* %temp44
store <4 x float> %249, <4 x float>* %output
store <4 x float> %250, <4 x float>* %output31
store <4 x float> %251, <4 x float>* %output32
store <4 x float> %252, <4 x float>* %output33
%253 = load <4 x float>* %output
%254 = load <4 x float>* %output31
%255 = load <4 x float>* %output32
%256 = load <4 x float>* %output33
%257 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 0
%258 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 1
%259 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 2
%260 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 3
%.clip_ptr = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %257, i32 0, i32 1
%.clip_ptr45 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %258, i32 0, i32 1
%.clip_ptr46 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %259, i32 0, i32 1
%.clip_ptr47 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %260, i32 0, i32 1
%261 = getelementptr [4 x float]* %.clip_ptr, i32 0, i32 0
%262 = getelementptr [4 x float]* %.clip_ptr45, i32 0, i32 0
%263 = getelementptr [4 x float]* %.clip_ptr46, i32 0, i32 0
%264 = getelementptr [4 x float]* %.clip_ptr47, i32 0, i32 0
%265 = extractelement <4 x float> %253, i32 0
%266 = extractelement <4 x float> %253, i32 1
%267 = extractelement <4 x float> %253, i32 2
%268 = extractelement <4 x float> %253, i32 3
store float %265, float* %261
store float %266, float* %262
store float %267, float* %263
store float %268, float* %264
%269 = getelementptr [4 x float]* %.clip_ptr, i32 0, i32 1
%270 = getelementptr [4 x float]* %.clip_ptr45, i32 0, i32 1
%271 = getelementptr [4 x float]* %.clip_ptr46, i32 0, i32 1
%272 = getelementptr [4 x float]* %.clip_ptr47, i32 0, i32 1
%273 = extractelement <4 x float> %254, i32 0
%274 = extractelement <4 x float> %254, i32 1
%275 = extractelement <4 x float> %254, i32 2
%276 = extractelement <4 x float> %254, i32 3
store float %273, float* %269
store float %274, float* %270
store float %275, float* %271
store float %276, float* %272
%277 = getelementptr [4 x float]* %.clip_ptr, i32 0, i32 2
%278 = getelementptr [4 x float]* %.clip_ptr45, i32 0, i32 2
%279 = getelementptr [4 x float]* %.clip_ptr46, i32 0, i32 2
%280 = getelementptr [4 x float]* %.clip_ptr47, i32 0, i32 2
%281 = extractelement <4 x float> %255, i32 0
%282 = extractelement <4 x float> %255, i32 1
%283 = extractelement <4 x float> %255, i32 2
%284 = extractelement <4 x float> %255, i32 3
store float %281, float* %277
store float %282, float* %278
store float %283, float* %279
store float %284, float* %280
%285 = getelementptr [4 x float]* %.clip_ptr, i32 0, i32 3
%286 = getelementptr [4 x float]* %.clip_ptr45, i32 0, i32 3
%287 = getelementptr [4 x float]* %.clip_ptr46, i32 0, i32 3
%288 = getelementptr [4 x float]* %.clip_ptr47, i32 0, i32 3
%289 = extractelement <4 x float> %256, i32 0
%290 = extractelement <4 x float> %256, i32 1
%291 = extractelement <4 x float> %256, i32 2
%292 = extractelement <4 x float> %256, i32 3
store float %289, float* %285
store float %290, float* %286
store float %291, float* %287
store float %292, float* %288
%293 = load <4 x float>* %output
%294 = load <4 x float>* %output31
%295 = load <4 x float>* %output32
%296 = load <4 x float>* %output33
%297 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 0
%298 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 1
%299 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 2
%300 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 3
%.pre_clip_pos_ptr = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %297, i32 0, i32 2
%.pre_clip_pos_ptr48 = getelementptr { i32, [4 x float], [4 x float], [3 x [4
x float]] }* %298, i32 0, i32 2
%.pre_clip_pos_ptr49 = getelementptr { i32, [4 x float], [4 x float], [3 x [4
x float]] }* %299, i32 0, i32 2
%.pre_clip_pos_ptr50 = getelementptr { i32, [4 x float], [4 x float], [3 x [4
x float]] }* %300, i32 0, i32 2
%301 = getelementptr [4 x float]* %.pre_clip_pos_ptr, i32 0, i32 0
%302 = getelementptr [4 x float]* %.pre_clip_pos_ptr48, i32 0, i32 0
%303 = getelementptr [4 x float]* %.pre_clip_pos_ptr49, i32 0, i32 0
%304 = getelementptr [4 x float]* %.pre_clip_pos_ptr50, i32 0, i32 0
%305 = extractelement <4 x float> %293, i32 0
%306 = extractelement <4 x float> %293, i32 1
%307 = extractelement <4 x float> %293, i32 2
%308 = extractelement <4 x float> %293, i32 3
store float %305, float* %301
store float %306, float* %302
store float %307, float* %303
store float %308, float* %304
%309 = getelementptr [4 x float]* %.pre_clip_pos_ptr, i32 0, i32 1
%310 = getelementptr [4 x float]* %.pre_clip_pos_ptr48, i32 0, i32 1
%311 = getelementptr [4 x float]* %.pre_clip_pos_ptr49, i32 0, i32 1
%312 = getelementptr [4 x float]* %.pre_clip_pos_ptr50, i32 0, i32 1
%313 = extractelement <4 x float> %294, i32 0
%314 = extractelement <4 x float> %294, i32 1
%315 = extractelement <4 x float> %294, i32 2
%316 = extractelement <4 x float> %294, i32 3
store float %313, float* %309
store float %314, float* %310
store float %315, float* %311
store float %316, float* %312
%317 = getelementptr [4 x float]* %.pre_clip_pos_ptr, i32 0, i32 2
%318 = getelementptr [4 x float]* %.pre_clip_pos_ptr48, i32 0, i32 2
%319 = getelementptr [4 x float]* %.pre_clip_pos_ptr49, i32 0, i32 2
%320 = getelementptr [4 x float]* %.pre_clip_pos_ptr50, i32 0, i32 2
%321 = extractelement <4 x float> %295, i32 0
%322 = extractelement <4 x float> %295, i32 1
%323 = extractelement <4 x float> %295, i32 2
%324 = extractelement <4 x float> %295, i32 3
store float %321, float* %317
store float %322, float* %318
store float %323, float* %319
store float %324, float* %320
%325 = getelementptr [4 x float]* %.pre_clip_pos_ptr, i32 0, i32 3
%326 = getelementptr [4 x float]* %.pre_clip_pos_ptr48, i32 0, i32 3
%327 = getelementptr [4 x float]* %.pre_clip_pos_ptr49, i32 0, i32 3
%328 = getelementptr [4 x float]* %.pre_clip_pos_ptr50, i32 0, i32 3
%329 = extractelement <4 x float> %296, i32 0
%330 = extractelement <4 x float> %296, i32 1
%331 = extractelement <4 x float> %296, i32 2
%332 = extractelement <4 x float> %296, i32 3
store float %329, float* %325
store float %330, float* %326
store float %331, float* %327
store float %332, float* %328
%333 = load <4 x float>* %output
%334 = load <4 x float>* %output31
%335 = load <4 x float>* %output32
%336 = load <4 x float>* %output33
%337 = fcmp ugt <4 x float> %333, %336
%338 = sext <4 x i1> %337 to <4 x i32>
%339 = and <4 x i32> %338, <i32 1, i32 1, i32 1, i32 1>
%340 = fadd <4 x float> %333, %336
%341 = fcmp ugt <4 x float> zeroinitializer, %340
%342 = sext <4 x i1> %341 to <4 x i32>
%343 = and <4 x i32> %342, <i32 2, i32 2, i32 2, i32 2>
%344 = or <4 x i32> %339, %343
%345 = fcmp ugt <4 x float> %334, %336
%346 = sext <4 x i1> %345 to <4 x i32>
%347 = and <4 x i32> %346, <i32 4, i32 4, i32 4, i32 4>
%348 = or <4 x i32> %344, %347
%349 = fadd <4 x float> %334, %336
%350 = fcmp ugt <4 x float> zeroinitializer, %349
%351 = sext <4 x i1> %350 to <4 x i32>
%352 = and <4 x i32> %351, <i32 8, i32 8, i32 8, i32 8>
%353 = or <4 x i32> %348, %352
%354 = fadd <4 x float> %335, %336
%355 = fcmp ugt <4 x float> zeroinitializer, %354
%356 = sext <4 x i1> %355 to <4 x i32>
%357 = and <4 x i32> %356, <i32 16, i32 16, i32 16, i32 16>
%358 = or <4 x i32> %353, %357
%359 = fcmp ugt <4 x float> %335, %336
%360 = sext <4 x i1> %359 to <4 x i32>
%361 = and <4 x i32> %360, <i32 32, i32 32, i32 32, i32 32>
%362 = or <4 x i32> %358, %361
%363 = load i32* %0
%364 = extractelement <4 x i32> %362, i32 0
%365 = or i32 %363, %364
%366 = extractelement <4 x i32> %362, i32 1
%367 = or i32 %365, %366
%368 = extractelement <4 x i32> %362, i32 2
%369 = or i32 %367, %368
%370 = extractelement <4 x i32> %362, i32 3
%371 = or i32 %369, %370
store i32 %371, i32* %0
%372 = load <4 x float>* %output33
%context.viewport_ptr = getelementptr { float*, float*, [14 x [4 x float]]*,
float*, [16 x { i32, i32, i32, i32, i32, [16 x i32], [16 x i32], [16 x i8*],
float, float, float, [4 x float] }] }* %context, i32 0, i32 3
%context.viewport = load float** %context.viewport_ptr
%373 = fdiv <4 x float> <float 1.000000e+00, float 1.000000e+00, float
1.000000e+00, float 1.000000e+00>, %372
store <4 x float> %373, <4 x float>* %output33
%374 = load <4 x float>* %output
%375 = getelementptr float* %context.viewport, i32 0
%376 = getelementptr float* %context.viewport, i32 4
%377 = load float* %375
%378 = insertelement <4 x float> undef, float %377, i32 0
%379 = insertelement <4 x float> %378, float %377, i32 1
%380 = insertelement <4 x float> %379, float %377, i32 2
%scale = insertelement <4 x float> %380, float %377, i32 3
%381 = load float* %376
%382 = insertelement <4 x float> undef, float %381, i32 0
%383 = insertelement <4 x float> %382, float %381, i32 1
%384 = insertelement <4 x float> %383, float %381, i32 2
%trans = insertelement <4 x float> %384, float %381, i32 3
%385 = fmul <4 x float> %374, %373
%386 = fmul <4 x float> %385, %scale
%387 = fadd <4 x float> %386, %trans
store <4 x float> %387, <4 x float>* %output
%388 = load <4 x float>* %output31
%389 = getelementptr float* %context.viewport, i32 1
%390 = getelementptr float* %context.viewport, i32 5
%391 = load float* %389
%392 = insertelement <4 x float> undef, float %391, i32 0
%393 = insertelement <4 x float> %392, float %391, i32 1
%394 = insertelement <4 x float> %393, float %391, i32 2
%scale51 = insertelement <4 x float> %394, float %391, i32 3
%395 = load float* %390
%396 = insertelement <4 x float> undef, float %395, i32 0
%397 = insertelement <4 x float> %396, float %395, i32 1
%398 = insertelement <4 x float> %397, float %395, i32 2
%trans52 = insertelement <4 x float> %398, float %395, i32 3
%399 = fmul <4 x float> %388, %373
%400 = fmul <4 x float> %399, %scale51
%401 = fadd <4 x float> %400, %trans52
store <4 x float> %401, <4 x float>* %output31
%402 = load <4 x float>* %output32
%403 = getelementptr float* %context.viewport, i32 2
%404 = getelementptr float* %context.viewport, i32 6
%405 = load float* %403
%406 = insertelement <4 x float> undef, float %405, i32 0
%407 = insertelement <4 x float> %406, float %405, i32 1
%408 = insertelement <4 x float> %407, float %405, i32 2
%scale53 = insertelement <4 x float> %408, float %405, i32 3
%409 = load float* %404
%410 = insertelement <4 x float> undef, float %409, i32 0
%411 = insertelement <4 x float> %410, float %409, i32 1
%412 = insertelement <4 x float> %411, float %409, i32 2
%trans54 = insertelement <4 x float> %412, float %409, i32 3
%413 = fmul <4 x float> %402, %373
%414 = fmul <4 x float> %413, %scale53
%415 = fadd <4 x float> %414, %trans54
store <4 x float> %415, <4 x float>* %output32
%output0.x = load <4 x float>* %output
%output0.y = load <4 x float>* %output31
%output0.z = load <4 x float>* %output32
%output0.w = load <4 x float>* %output33
%416 = extractelement <4 x float> %output0.x, i32 0
%417 = insertelement <4 x float> zeroinitializer, float %416, i32 0
%418 = extractelement <4 x float> %output0.x, i32 1
%419 = insertelement <4 x float> zeroinitializer, float %418, i32 0
%420 = extractelement <4 x float> %output0.x, i32 2
%421 = insertelement <4 x float> zeroinitializer, float %420, i32 0
%422 = extractelement <4 x float> %output0.x, i32 3
%423 = insertelement <4 x float> zeroinitializer, float %422, i32 0
%424 = extractelement <4 x float> %output0.y, i32 0
%425 = insertelement <4 x float> %417, float %424, i32 1
%426 = extractelement <4 x float> %output0.y, i32 1
%427 = insertelement <4 x float> %419, float %426, i32 1
%428 = extractelement <4 x float> %output0.y, i32 2
%429 = insertelement <4 x float> %421, float %428, i32 1
%430 = extractelement <4 x float> %output0.y, i32 3
%431 = insertelement <4 x float> %423, float %430, i32 1
%432 = extractelement <4 x float> %output0.z, i32 0
%433 = insertelement <4 x float> %425, float %432, i32 2
%434 = extractelement <4 x float> %output0.z, i32 1
%435 = insertelement <4 x float> %427, float %434, i32 2
%436 = extractelement <4 x float> %output0.z, i32 2
%437 = insertelement <4 x float> %429, float %436, i32 2
%438 = extractelement <4 x float> %output0.z, i32 3
%439 = insertelement <4 x float> %431, float %438, i32 2
%440 = extractelement <4 x float> %output0.w, i32 0
%441 = insertelement <4 x float> %433, float %440, i32 3
%442 = extractelement <4 x float> %output0.w, i32 1
%443 = insertelement <4 x float> %435, float %442, i32 3
%444 = extractelement <4 x float> %output0.w, i32 2
%445 = insertelement <4 x float> %437, float %444, i32 3
%446 = extractelement <4 x float> %output0.w, i32 3
%447 = insertelement <4 x float> %439, float %446, i32 3
%448 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 0
%449 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 1
%450 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 2
%451 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 3
%452 = extractelement <4 x i32> %362, i32 0
%453 = extractelement <4 x i32> %362, i32 1
%454 = extractelement <4 x i32> %362, i32 2
%455 = extractelement <4 x i32> %362, i32 3
%.id_ptr = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %448, i32 0, i32 0
%.data_ptr = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %448, i32 0, i32 3
%456 = or i32 -49152, %452
store i32 %456, i32* %.id_ptr
%457 = getelementptr [3 x [4 x float]]* %.data_ptr, i32 0, i32 0, i32 0
%458 = extractelement <4 x float> %441, i32 0
%459 = extractelement <4 x float> %441, i32 1
%460 = extractelement <4 x float> %441, i32 2
%461 = extractelement <4 x float> %441, i32 3
%462 = getelementptr float* %457, i32 0
%463 = getelementptr float* %457, i32 1
%464 = getelementptr float* %457, i32 2
%465 = getelementptr float* %457, i32 3
store float %458, float* %462
store float %459, float* %463
store float %460, float* %464
store float %461, float* %465
%.id_ptr55 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %449, i32 0, i32 0
%.data_ptr56 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %449, i32 0, i32 3
%466 = or i32 -49152, %453
store i32 %466, i32* %.id_ptr55
%467 = getelementptr [3 x [4 x float]]* %.data_ptr56, i32 0, i32 0, i32 0
%468 = extractelement <4 x float> %443, i32 0
%469 = extractelement <4 x float> %443, i32 1
%470 = extractelement <4 x float> %443, i32 2
%471 = extractelement <4 x float> %443, i32 3
%472 = getelementptr float* %467, i32 0
%473 = getelementptr float* %467, i32 1
%474 = getelementptr float* %467, i32 2
%475 = getelementptr float* %467, i32 3
store float %468, float* %472
store float %469, float* %473
store float %470, float* %474
store float %471, float* %475
%.id_ptr57 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %450, i32 0, i32 0
%.data_ptr58 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %450, i32 0, i32 3
%476 = or i32 -49152, %454
store i32 %476, i32* %.id_ptr57
%477 = getelementptr [3 x [4 x float]]* %.data_ptr58, i32 0, i32 0, i32 0
%478 = extractelement <4 x float> %445, i32 0
%479 = extractelement <4 x float> %445, i32 1
%480 = extractelement <4 x float> %445, i32 2
%481 = extractelement <4 x float> %445, i32 3
%482 = getelementptr float* %477, i32 0
%483 = getelementptr float* %477, i32 1
%484 = getelementptr float* %477, i32 2
%485 = getelementptr float* %477, i32 3
store float %478, float* %482
store float %479, float* %483
store float %480, float* %484
store float %481, float* %485
%.id_ptr59 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %451, i32 0, i32 0
%.data_ptr60 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %451, i32 0, i32 3
%486 = or i32 -49152, %455
store i32 %486, i32* %.id_ptr59
%487 = getelementptr [3 x [4 x float]]* %.data_ptr60, i32 0, i32 0, i32 0
%488 = extractelement <4 x float> %447, i32 0
%489 = extractelement <4 x float> %447, i32 1
%490 = extractelement <4 x float> %447, i32 2
%491 = extractelement <4 x float> %447, i32 3
%492 = getelementptr float* %487, i32 0
%493 = getelementptr float* %487, i32 1
%494 = getelementptr float* %487, i32 2
%495 = getelementptr float* %487, i32 3
store float %488, float* %492
store float %489, float* %493
store float %490, float* %494
store float %491, float* %495
%output1.x = load <4 x float>* %output34
%output1.y = load <4 x float>* %output35
%output1.z = load <4 x float>* %output36
%output1.w = load <4 x float>* %output37
%496 = extractelement <4 x float> %output1.x, i32 0
%497 = insertelement <4 x float> zeroinitializer, float %496, i32 0
%498 = extractelement <4 x float> %output1.x, i32 1
%499 = insertelement <4 x float> zeroinitializer, float %498, i32 0
%500 = extractelement <4 x float> %output1.x, i32 2
%501 = insertelement <4 x float> zeroinitializer, float %500, i32 0
%502 = extractelement <4 x float> %output1.x, i32 3
%503 = insertelement <4 x float> zeroinitializer, float %502, i32 0
%504 = extractelement <4 x float> %output1.y, i32 0
%505 = insertelement <4 x float> %497, float %504, i32 1
%506 = extractelement <4 x float> %output1.y, i32 1
%507 = insertelement <4 x float> %499, float %506, i32 1
%508 = extractelement <4 x float> %output1.y, i32 2
%509 = insertelement <4 x float> %501, float %508, i32 1
%510 = extractelement <4 x float> %output1.y, i32 3
%511 = insertelement <4 x float> %503, float %510, i32 1
%512 = extractelement <4 x float> %output1.z, i32 0
%513 = insertelement <4 x float> %505, float %512, i32 2
%514 = extractelement <4 x float> %output1.z, i32 1
%515 = insertelement <4 x float> %507, float %514, i32 2
%516 = extractelement <4 x float> %output1.z, i32 2
%517 = insertelement <4 x float> %509, float %516, i32 2
%518 = extractelement <4 x float> %output1.z, i32 3
%519 = insertelement <4 x float> %511, float %518, i32 2
%520 = extractelement <4 x float> %output1.w, i32 0
%521 = insertelement <4 x float> %513, float %520, i32 3
%522 = extractelement <4 x float> %output1.w, i32 1
%523 = insertelement <4 x float> %515, float %522, i32 3
%524 = extractelement <4 x float> %output1.w, i32 2
%525 = insertelement <4 x float> %517, float %524, i32 3
%526 = extractelement <4 x float> %output1.w, i32 3
%527 = insertelement <4 x float> %519, float %526, i32 3
%528 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 0
%529 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 1
%530 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 2
%531 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]] }*
%4, i32 3
%532 = extractelement <4 x i32> %362, i32 0
%533 = extractelement <4 x i32> %362, i32 1
%534 = extractelement <4 x i32> %362, i32 2
%535 = extractelement <4 x i32> %362, i32 3
%.id_ptr61 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %528, i32 0, i32 0
%.data_ptr62 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %528, i32 0, i32 3
%536 = or i32 -49152, %532
store i32 %536, i32* %.id_ptr61
%537 = getelementptr [3 x [4 x float]]* %.data_ptr62, i32 0, i32 1, i32 0
%538 = extractelement <4 x float> %521, i32 0
%539 = extractelement <4 x float> %521, i32 1
%540 = extractelement <4 x float> %521, i32 2
%541 = extractelement <4 x float> %521, i32 3
%542 = getelementptr float* %537, i32 0
%543 = getelementptr float* %537, i32 1
%544 = getelementptr float* %537, i32 2
%545 = getelementptr float* %537, i32 3
store float %538, float* %542
store float %539, float* %543
store float %540, float* %544
store float %541, float* %545
%.id_ptr63 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %529, i32 0, i32 0
%.data_ptr64 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %529, i32 0, i32 3
%546 = or i32 -49152, %533
store i32 %546, i32* %.id_ptr63
%547 = getelementptr [3 x [4 x float]]* %.data_ptr64, i32 0, i32 1, i32 0
%548 = extractelement <4 x float> %523, i32 0
%549 = extractelement <4 x float> %523, i32 1
%550 = extractelement <4 x float> %523, i32 2
%551 = extractelement <4 x float> %523, i32 3
%552 = getelementptr float* %547, i32 0
%553 = getelementptr float* %547, i32 1
%554 = getelementptr float* %547, i32 2
%555 = getelementptr float* %547, i32 3
store float %548, float* %552
store float %549, float* %553
store float %550, float* %554
store float %551, float* %555
%.id_ptr65 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %530, i32 0, i32 0
%.data_ptr66 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %530, i32 0, i32 3
%556 = or i32 -49152, %534
store i32 %556, i32* %.id_ptr65
%557 = getelementptr [3 x [4 x float]]* %.data_ptr66, i32 0, i32 1, i32 0
%558 = extractelement <4 x float> %525, i32 0
%559 = extractelement <4 x float> %525, i32 1
%560 = extractelement <4 x float> %525, i32 2
%561 = extractelement <4 x float> %525, i32 3
%562 = getelementptr float* %557, i32 0
%563 = getelementptr float* %557, i32 1
%564 = getelementptr float* %557, i32 2
%565 = getelementptr float* %557, i32 3
store float %558, float* %562
store float %559, float* %563
store float %560, float* %564
store float %561, float* %565
%.id_ptr67 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x float]]
}* %531, i32 0, i32 0
%.data_ptr68 = getelementptr { i32, [4 x float], [4 x float], [3 x [4 x
float]] }* %531, i32 0, i32 3
%566 = or i32 -49152, %535
store i32 %566, i32* %.id_ptr67
%567 = getelementptr [3 x [4 x float]]* %.data_ptr68, i32 0, i32 1, i32 0
%568 = extractelement <4 x float> %527, i32 0
%569 = extractelement <4 x float> %527, i32 1
%570 = extractelement <4 x float> %527, i32 2
%571 = extractelement <4 x float> %527, i32 3
%572 = getelementptr float* %567, i32 0
%573 = getelementptr float* %567, i32 1
%574 = getelementptr float* %567, i32 2
%575 = getelementptr float* %567, i32 3
store float %568, float* %572
store float %569, float* %573
store float %570, float* %574
store float %571, float* %575
%576 = add i32 %2, 4
store i32 %576, i32* %loop_counter
%577 = icmp uge i32 %576, %1
br i1 %577, label %loop_end, label %loop_begin
loop_end: ; preds = %loop_begin
%578 = load i32* %loop_counter
%579 = load i32* %0
ret i32 %579
}
src/gallium/auxiliary/draw/draw_llvm.c:1475:draw_llvm_generate: Assertion `0'
failed.
(gdb) bt
#0 0x00007fb8b5c0203f in _debug_assert_fail (expr=0x7fb8b65a343a "0",
file=0x7fb8b65a2700 "src/gallium/auxiliary/draw/draw_llvm.c", line=1475,
function=0x7fb8b65a3470 "draw_llvm_generate") at
src/gallium/auxiliary/util/u_debug.c:278
#1 0x00007fb8b5c8dc6b in draw_llvm_generate (llvm=0x9dac60, variant=0xb7d5b0,
elts=0 '\000')
at src/gallium/auxiliary/draw/draw_llvm.c:1475
#2 0x00007fb8b5c8a418 in draw_llvm_create_variant (llvm=0x9dac60,
num_inputs=3, key=0x7fffc1e9c190)
at src/gallium/auxiliary/draw/draw_llvm.c:444
#3 0x00007fb8b5c9081e in llvm_middle_end_prepare (middle=0x9e5cb0, in_prim=7,
opt=3, max_vertices=0x9e2eb8)
at src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:162
#4 0x00007fb8b5bdf6be in vsplit_prepare (frontend=0x9e2e80, in_prim=7,
middle=0x9e5cb0, opt=3)
at src/gallium/auxiliary/draw/draw_pt_vsplit.c:175
#5 0x00007fb8b5bd30bd in draw_pt_arrays (draw=0x9d9b70, prim=7, start=0,
count=4)
at src/gallium/auxiliary/draw/draw_pt.c:134
#6 0x00007fb8b5bd3d64 in draw_vbo (draw=0x9d9b70, info=0x7fffc1e9c620) at
src/gallium/auxiliary/draw/draw_pt.c:526
#7 0x00007fb8b58d19d9 in llvmpipe_draw_vbo (pipe=0x991cf0,
info=0x7fffc1e9c620)
at src/gallium/drivers/llvmpipe/lp_draw_arrays.c:92
#8 0x00007fb8b5bbd27b in cso_draw_vbo (cso=0xac8370, info=0x7fffc1e9c620)
at src/gallium/auxiliary/cso_cache/cso_context.c:1385
#9 0x00007fb8b5a56661 in st_draw_vbo (ctx=0xa3c370, prims=0x7fffc1e9c6c0,
nr_prims=1, ib=0x0,
index_bounds_valid=1 '\001', min_index=0, max_index=3, tfb_vertcount=0x0)
at src/mesa/state_tracker/st_draw.c:265
#10 0x00007fb8b5af6098 in vbo_draw_arrays (ctx=0xa3c370, mode=7, start=0,
count=4, numInstances=1, baseInstance=0)
at src/mesa/vbo/vbo_exec_array.c:645
#11 0x00007fb8b5af61de in vbo_exec_DrawArrays (mode=7, start=0, count=4) at
src/mesa/vbo/vbo_exec_array.c:677
#12 0x00007fb8b7fba5b4 in stub_glDrawArrays (mode=7, first=0, count=4)
at piglit/tests/util/generated_dispatch.c:5061
#13 0x00007fb8b8024944 in piglit_draw_rect (x=10, y=10, w=10, h=10) at
piglit/tests/util/piglit-util-gl.c:813
#14 0x00000000004034cc in piglit_display () at
piglit/tests/shaders/shader_runner.c:1164
#15 0x00007fb8b7fb3f4d in display () at
piglit/tests/util/piglit-framework-glut.c:53
#16 0x00007fb8b795e220 in ?? () from /usr/lib/libglut.so.3
#17 0x00007fb8b7961939 in fgEnumWindows () from /usr/lib/libglut.so.3
#18 0x00007fb8b795e65a in glutMainLoopEvent () from /usr/lib/libglut.so.3
#19 0x00007fb8b795ef65 in glutMainLoop () from /usr/lib/libglut.so.3
#20 0x00007fb8b7fb4001 in piglit_framework_glut_run (info=0x7fffc1e9ce50)
at piglit/tests/util/piglit-framework-glut.c:139
#21 0x00007fb8b7fb350d in piglit_gl_test_run (argc=2, argv=0x7fffc1e9cf68,
info=0x7fffc1e9ce50)
at piglit/tests/util/piglit-framework.c:138
#22 0x000000000040309f in main (argc=2, argv=0x7fffc1e9cf68) at
piglit/tests/shaders/shader_runner.c:42
(gdb) frame 1
#1 0x00007fb8b5c8dc6b in draw_llvm_generate (llvm=0x9dac60, variant=0xb7d5b0,
elts=0 '\000')
at src/gallium/auxiliary/draw/draw_llvm.c:1475
1475 assert(0);
(gdb) l
1470 * Translate the LLVM IR into machine code.
1471 */
1472 #ifdef DEBUG
1473 if (LLVMVerifyFunction(variant_func, LLVMPrintMessageAction)) {
1474 lp_debug_dump_value(variant_func);
1475 assert(0);
1476 }
1477 #endif
1478
1479 LLVMRunFunctionPassManager(gallivm->passmgr, variant_func);
46931ecf480e1d231bb6c2236d91b5390f2465ac is the first bad commit
commit 46931ecf480e1d231bb6c2236d91b5390f2465ac
Author: Olivier Galibert <galibert at pobox.com>
Date: Tue Jun 19 20:51:20 2012 +0200
llvmpipe: Simplify and fix system variables fetch.
The system array values concept doesn't really because it expects the
system values to be fixed per call, which is wrong for gl_VertexID and
iffy for gl_SampleID. So this patch does two things:
- kill the array, have emit_fetch_system_value directly pick the
values it needs (only gl_InstanceID for now, as the previous code)
- correctly handle the expected type in emit_fetch_system_value
Signed-off-by: Olivier Galibert <galibert at pobox.com>
Reviewed-by: Brian Paul <brianp at vmware.com>
:040000 040000 fb5b3d37d3854ca91661384af17bfebac8859a7f
8eef0cdf4910309bba3b327d06e80a096dc72b20 M src
bisect run success
--
Configure bugmail: https://bugs.freedesktop.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug.
More information about the mesa-dev
mailing list