Mesa (master): radeon/llvm: Declare the interpolation intrinsics as ReadOnly

Tom Stellard tstellar at kemper.freedesktop.org
Wed Aug 29 20:43:44 UTC 2012


Module: Mesa
Branch: master
Commit: cf4ac69928eb17685958e6b3b01b97544560d90e
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cf4ac69928eb17685958e6b3b01b97544560d90e

Author: Tom Stellard <thomas.stellard at amd.com>
Date:   Wed Aug 29 09:58:28 2012 -0400

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.

---

 src/gallium/drivers/radeon/SIInstrInfo.td      |    1 +
 src/gallium/drivers/radeon/SIIntrinsics.td     |    2 +-
 src/gallium/drivers/radeonsi/radeonsi_shader.c |    4 ++--
 3 files changed, 4 insertions(+), 3 deletions(-)

diff --git a/src/gallium/drivers/radeon/SIInstrInfo.td b/src/gallium/drivers/radeon/SIInstrInfo.td
index 81df55d..5588280 100644
--- a/src/gallium/drivers/radeon/SIInstrInfo.td
+++ b/src/gallium/drivers/radeon/SIInstrInfo.td
@@ -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> :
diff --git a/src/gallium/drivers/radeon/SIIntrinsics.td b/src/gallium/drivers/radeon/SIIntrinsics.td
index b9544f1..401325b 100644
--- a/src/gallium/drivers/radeon/SIIntrinsics.td
+++ b/src/gallium/drivers/radeon/SIIntrinsics.td
@@ -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;
diff --git a/src/gallium/drivers/radeonsi/radeonsi_shader.c b/src/gallium/drivers/radeonsi/radeonsi_shader.c
index 98866c4..d07b050 100644
--- a/src/gallium/drivers/radeonsi/radeonsi_shader.c
+++ b/src/gallium/drivers/radeonsi/radeonsi_shader.c
@@ -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);
 	}
 }
 




More information about the mesa-commit mailing list