radeon/llvm: Declare the interpolation intrinsics as ReadOnly

This signals to the Dead Code Elimination pass that it is safe to
remove these instructions when they are dead.
This commit is contained in:
Tom Stellard 2012-08-29 09:58:28 -04:00
parent 73a2c4b9db
commit cf4ac69928
3 changed files with 4 additions and 3 deletions

View file

@ -364,6 +364,7 @@ class VINTRP <bits <2> op, dag outs, dag ins, string asm, list<dag> pattern> :
let EncodingType = 11; // SIInstrEncodingType::VINTRP
let Uses = [M0];
let neverHasSideEffects = 1;
}
class VOP1 <bits<8> op, dag outs, dag ins, string asm, list<dag> pattern> :

View file

@ -26,7 +26,7 @@ let TargetPrefix = "SI", isTarget = 1 in {
/* Interpolation Intrinsics */
def int_SI_set_M0 : Intrinsic <[llvm_i32_ty], [llvm_i32_ty]>;
class Interp : Intrinsic <[llvm_float_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], []>;
class Interp : Intrinsic <[llvm_float_ty], [llvm_i32_ty, llvm_i32_ty, llvm_i32_ty], [IntrReadMem]>;
def int_SI_fs_interp_linear_center : Interp;
def int_SI_fs_interp_linear_centroid : Interp;

View file

@ -329,8 +329,8 @@ static void declare_input_fs(
args[1] = attr_number;
args[2] = params;
si_shader_ctx->radeon_bld.inputs[soa_index] =
lp_build_intrinsic(gallivm->builder, intr_name,
input_type, args, 3);
build_intrinsic(base->gallivm->builder, intr_name,
input_type, args, 3, LLVMReadOnlyAttribute);
}
}