i915g: Implement KILP.

This commit is contained in:
Stéphane Marchesin 2011-12-15 12:31:36 -08:00
parent 3c01aefe5f
commit c661843ab6
1 changed files with 12 additions and 3 deletions

View File

@ -510,9 +510,9 @@ i915_translate_instruction(struct i915_fp_compile *p,
src0 = src_vector(p, &inst->Src[0], fs); src0 = src_vector(p, &inst->Src[0], fs);
src1 = src_vector(p, &inst->Src[1], fs); src1 = src_vector(p, &inst->Src[1], fs);
src2 = src_vector(p, &inst->Src[2], fs); src2 = src_vector(p, &inst->Src[2], fs);
i915_emit_arith(p, A0_CMP, i915_emit_arith(p, A0_CMP,
get_result_vector(p, &inst->Dst[0]), get_result_vector(p, &inst->Dst[0]),
get_result_flags(inst), get_result_flags(inst),
0, src0, src2, src1); /* NOTE: order of src2, src1 */ 0, src0, src2, src1); /* NOTE: order of src2, src1 */
break; break;
@ -655,7 +655,16 @@ i915_translate_instruction(struct i915_fp_compile *p,
break; break;
case TGSI_OPCODE_KILP: case TGSI_OPCODE_KILP:
assert(0); /* not tested yet */ /* We emit an unconditional kill; we may want to revisit
* if we ever implement conditionals.
*/
i915_emit_texld(p,
tmp, /* dest reg: a dummy reg */
A0_DEST_CHANNEL_ALL, /* dest writemask */
0, /* sampler */
negate(swizzle(0, ONE, ONE, ONE, ONE), 1, 1, 1, 1), /* coord */
T0_TEXKILL, /* opcode */
1); /* num_coord */
break; break;
case TGSI_OPCODE_LG2: case TGSI_OPCODE_LG2: