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@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@pobox.com> Reviewed-by: Brian Paul <brianp@vmware.com> :040000 040000 fb5b3d37d3854ca91661384af17bfebac8859a7f 8eef0cdf4910309bba3b327d06e80a096dc72b20 M src bisect run success
Argh. That's fixed with a MESA_GLSL_VERSION_OVERRIDE=130. So that's going to go away as soon as we dare switching that in lp_screen.c. Since ARB_draw_instanced requires integer support (as in "EXT_gpu_shader4 or NV_vertex_program4 or OpenGL 3.0 is required."), it shouldn't be activated in the first place if integers aren't active. Gonna send a patch to fix that, which will hopefully be refused and a version tick will be done instead :-)
Feature-dropping bug sent to the list...
mesa: ca8fa0230896727af81ee54197f6e2233d49481d The crash still occurs.
Should be fixed with b3ba0a7afa6311e12852fb1373452e480f89ea96 now.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.