AMDGPU: Report extractelement as free in cost model
[oota-llvm.git] / lib / Target / AMDGPU / AMDGPUTargetTransformInfo.cpp
index 6dacc742b1290c918e7cd4de25fd18c996c80530..4afcc60984fc7c84ae2c47868cd375f2bfc4178c 100644 (file)
@@ -80,3 +80,14 @@ unsigned AMDGPUTTIImpl::getMaxInterleaveFactor(unsigned VF) {
   // Semi-arbitrary large amount.
   return 64;
 }
+
+int AMDGPUTTIImpl::getVectorInstrCost(unsigned Opcode, Type *ValTy,
+                                      unsigned Index) {
+  switch (Opcode) {
+  case Instruction::ExtractElement:
+    // Dynamic indexing isn't free and is best avoided.
+    return Index == ~0u ? 2 : 0;
+  default:
+    return BaseT::getVectorInstrCost(Opcode, ValTy, Index);
+  }
+}