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@lists.freedesktop.org ReportedBy: v...@freedesktop.org CC: galib...@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 <galib...@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 <galib...@pobox.com> Reviewed-by: Brian Paul <bri...@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. _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev