[llvm] r290294 - [NVVMIntrRange] Only set range metadata if none is already present

Philip Reames via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 29 18:56:15 PST 2016


 From the description, I wonder if intersecting the two ranges might be 
better?  Note that I have no clue what this code is being used for, so 
take my suggestion with a bag of salt.

Philip

On 12/21/2016 04:52 PM, David Majnemer via llvm-commits wrote:
> Author: majnemer
> Date: Wed Dec 21 18:51:59 2016
> New Revision: 290294
>
> URL: http://llvm.org/viewvc/llvm-project?rev=290294&view=rev
> Log:
> [NVVMIntrRange] Only set range metadata if none is already present
>
> The range metadata inserted by NVVMIntrRange is pessimistic, range
> metadata already present could be more precise.
>
> Modified:
>      llvm/trunk/lib/Target/NVPTX/NVVMIntrRange.cpp
>      llvm/trunk/test/CodeGen/NVPTX/intrinsic-old.ll
>
> Modified: llvm/trunk/lib/Target/NVPTX/NVVMIntrRange.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/NVPTX/NVVMIntrRange.cpp?rev=290294&r1=290293&r2=290294&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/NVPTX/NVVMIntrRange.cpp (original)
> +++ llvm/trunk/lib/Target/NVPTX/NVVMIntrRange.cpp Wed Dec 21 18:51:59 2016
> @@ -65,6 +65,10 @@ INITIALIZE_PASS(NVVMIntrRange, "nvvm-int
>   // Adds the passed-in [Low,High) range information as metadata to the
>   // passed-in call instruction.
>   static bool addRangeMetadata(uint64_t Low, uint64_t High, CallInst *C) {
> +  // This call already has range metadata, nothing to do.
> +  if (C->getMetadata(LLVMContext::MD_range))
> +    return false;
> +
>     LLVMContext &Context = C->getParent()->getContext();
>     IntegerType *Int32Ty = Type::getInt32Ty(Context);
>     Metadata *LowAndHigh[] = {
>
> Modified: llvm/trunk/test/CodeGen/NVPTX/intrinsic-old.ll
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/NVPTX/intrinsic-old.ll?rev=290294&r1=290293&r2=290294&view=diff
> ==============================================================================
> --- llvm/trunk/test/CodeGen/NVPTX/intrinsic-old.ll (original)
> +++ llvm/trunk/test/CodeGen/NVPTX/intrinsic-old.ll Wed Dec 21 18:51:59 2016
> @@ -155,6 +155,13 @@ define ptx_device i32 @test_nctaid_x() {
>   	ret i32 %x
>   }
>   
> +define ptx_device i32 @test_already_has_range_md() {
> +; CHECK: mov.u32 %r{{[0-9]+}}, %nctaid.x;
> +; RANGE: call i32 @llvm.nvvm.read.ptx.sreg.nctaid.x(), !range ![[ALREADY:[0-9]+]]
> +	%x = call i32 @llvm.nvvm.read.ptx.sreg.nctaid.x(), !range !0
> +	ret i32 %x
> +}
> +
>   
>   define ptx_device i32 @test_nctaid_w() {
>   ; CHECK: mov.u32 %r{{[0-9]+}}, %nctaid.w;
> @@ -311,6 +318,9 @@ declare i32 @llvm.nvvm.read.ptx.sreg.pm3
>   
>   declare void @llvm.nvvm.bar.sync(i32 %i)
>   
> +!0 = !{i32 0, i32 19}
> +; RANGE-DAG: ![[ALREADY]] = !{i32 0, i32 19}
> +; RANGE-DAG: ![[BLK_IDX_XY]] = !{i32 0, i32 1024}
>   ; RANGE-DAG: ![[BLK_IDX_XY]] = !{i32 0, i32 1024}
>   ; RANGE-DAG: ![[BLK_IDX_Z]] = !{i32 0, i32 64}
>   ; RANGE-DAG: ![[BLK_SIZE_XY]] = !{i32 1, i32 1025}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits




More information about the llvm-commits mailing list