diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-03-25 00:14:11 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-03-25 00:14:11 +0000 |
commit | 59767cea79e9ca727b5d2de8a6aa2318d671afd5 (patch) | |
tree | 37ee04ded043ad4e34c19d90f0efa1c68711c138 /llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp | |
parent | 95853077c3f3f959af93a6b50d751834aea1f8d6 (diff) | |
download | bcm5719-llvm-59767cea79e9ca727b5d2de8a6aa2318d671afd5.tar.gz bcm5719-llvm-59767cea79e9ca727b5d2de8a6aa2318d671afd5.zip |
AMDGPU: TTI: Make insertelement free.
We don't want to have a cost to scalarizing operations.
llvm-svn: 264364
Diffstat (limited to 'llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp b/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp index 9cd3c39722d..39be33e4a2c 100644 --- a/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp +++ b/llvm/lib/Target/AMDGPU/AMDGPUTargetTransformInfo.cpp @@ -99,6 +99,11 @@ int AMDGPUTTIImpl::getVectorInstrCost(unsigned Opcode, Type *ValTy, unsigned Index) { switch (Opcode) { case Instruction::ExtractElement: + case Instruction::InsertElement: + // Extracts are just reads of a subregister, so are free. Inserts are + // considered free because we don't want to have any cost for scalarizing + // operations, and we don't have to copy into a different register class. + // Dynamic indexing isn't free and is best avoided. return Index == ~0u ? 2 : 0; default: |