[AMDGPU] Restructure code object metadata creation
  - Rename runtime metadata -> code object metadata
  - Make metadata not flow
  - Switch enums to use ScalarEnumerationTraits
  - Cleanup and move AMDGPUCodeObjectMetadata.h to AMDGPU/MCTargetDesc
  - Introduce in-memory representation for attributes
  - Code object metadata streamer
  - Create metadata for isa and printf during EmitStartOfAsmFile
  - Create metadata for kernel during EmitFunctionBodyStart
  - Finalize and emit metadata to .note during EmitEndOfAsmFile
  - Other minor improvements/bug fixes

Differential Revision: https://reviews.llvm.org/D29948

llvm-svn: 298552
diff --git a/llvm/test/CodeGen/AMDGPU/code-object-metadata-invalid-ocl-version-1.ll b/llvm/test/CodeGen/AMDGPU/code-object-metadata-invalid-ocl-version-1.ll
new file mode 100644
index 0000000..53ffb76
--- /dev/null
+++ b/llvm/test/CodeGen/AMDGPU/code-object-metadata-invalid-ocl-version-1.ll
@@ -0,0 +1,21 @@
+; RUN: llc -mtriple=amdgcn-amd-amdhsa -filetype=obj -o - < %s | llvm-readobj -amdgpu-code-object-metadata | FileCheck %s
+
+; Make sure llc does not crash for invalid opencl version metadata.
+
+; CHECK: ---
+; CHECK: Version: [ 1, 0 ]
+; CHECK: Isa:
+; CHECK:   WavefrontSize:        64
+; CHECK:   LocalMemorySize:      65536
+; CHECK:   EUsPerCU:             4
+; CHECK:   MaxWavesPerEU:        10
+; CHECK:   MaxFlatWorkGroupSize: 2048
+; CHECK:   SGPRAllocGranule:     8
+; CHECK:   TotalNumSGPRs:        512
+; CHECK:   AddressableNumSGPRs:  104
+; CHECK:   VGPRAllocGranule:     4
+; CHECK:   TotalNumVGPRs:        256
+; CHECK:   AddressableNumVGPRs:  256
+; CHECK: ...
+
+!opencl.ocl.version = !{}