[llvm] r182125 - R600: Improve texture handling

Nick Lewycky nicholas at mxc.ca
Thu Aug 15 01:57:48 PDT 2013


Vincent Lejeune wrote:
> Author: vljn
> Date: Fri May 17 11:50:20 2013
> New Revision: 182125
>
> URL: http://llvm.org/viewvc/llvm-project?rev=182125&view=rev
> Log:
> R600: Improve texture handling

[...]

> Added: llvm/trunk/lib/Target/R600/R600TextureIntrinsicsReplacer.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/R600/R600TextureIntrinsicsReplacer.cpp?rev=182125&view=auto
> ==============================================================================
> --- llvm/trunk/lib/Target/R600/R600TextureIntrinsicsReplacer.cpp (added)
> +++ llvm/trunk/lib/Target/R600/R600TextureIntrinsicsReplacer.cpp Fri May 17 11:50:20 2013

[...]

> +  void ReplaceTexIntrinsic(CallInst&I, bool hasLOD, FunctionType *FT,
> +                           const char *VanillaInt,
> +                           const char *ShadowInt) {
> +    Value *Coord = I.getArgOperand(0);
> +    Value *ResourceId = I.getArgOperand(1);
> +    Value *SamplerId = I.getArgOperand(2);
> +
> +    unsigned TextureType =
> +        dyn_cast<ConstantInt>(I.getArgOperand(3))->getZExtValue();

This can be zero ...

> +
> +    unsigned SrcSelect[4] = { 0, 1, 2, 3 };
> +    unsigned CT[4] = {1, 1, 1, 1};
> +    Value *Offset[3] = {
> +      ConstantInt::get(Int32Type, 0),
> +      ConstantInt::get(Int32Type, 0),
> +      ConstantInt::get(Int32Type, 0)
> +    };
> +    bool useShadowVariant;
> +
> +    getAdjustementFromTextureTarget(TextureType, hasLOD, SrcSelect, CT,
> +                                    useShadowVariant);

... which goes through an explicit "case 0: return" in 
getAdjustmentFromTextureTarget instead of the "default: 
llvm_unreachable" ...

> +
> +    ReplaceCallInst(I, FT, useShadowVariant?ShadowInt:VanillaInt, SrcSelect,
> +                    Offset, ResourceId, SamplerId, CT, Coord);

... and then useShadowVariant is used uninitialized here. Please fix!

Nick



More information about the llvm-commits mailing list