- x = LLVMBuildSIToFP(builder, x, vec_type, "");
- y = LLVMBuildSIToFP(builder, y, vec_type, "");
-
- pos[0] = x;
- pos[1] = y;
-
- /*
- * Calculate z and w from the interpolation factors.
- */
-
- for(chan = 2; chan < NUM_CHANNELS; ++chan) {
- LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), chan, 0);
- LLVMValueRef a0 = LLVMBuildLoad(builder, LLVMBuildGEP(builder, a0_ptr, &index, 1, ""), "");
- LLVMValueRef dadx = LLVMBuildLoad(builder, LLVMBuildGEP(builder, dadx_ptr, &index, 1, ""), "");
- LLVMValueRef dady = LLVMBuildLoad(builder, LLVMBuildGEP(builder, dady_ptr, &index, 1, ""), "");
- LLVMValueRef res;
- a0 = lp_build_broadcast(builder, vec_type, a0);
- dadx = lp_build_broadcast(builder, vec_type, dadx);
- dady = lp_build_broadcast(builder, vec_type, dady);
- res = a0;
- res = LLVMBuildAdd(builder, res, LLVMBuildMul(builder, dadx, x, ""), "");
- res = LLVMBuildAdd(builder, res, LLVMBuildMul(builder, dady, y, ""), "");
- pos[chan] = res;
- }
-
- for(chan = 0; chan < NUM_CHANNELS; ++chan)
- lp_build_name(pos[chan], "pos.%c", "xyzw"[chan]);