AMDGPU: Add and set AMDGPU-specific e_flags

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

llvm-svn: 314987
diff --git a/llvm/test/CodeGen/AMDGPU/elf-header.ll b/llvm/test/CodeGen/AMDGPU/elf-header.ll
index de9714c..192eb78 100644
--- a/llvm/test/CodeGen/AMDGPU/elf-header.ll
+++ b/llvm/test/CodeGen/AMDGPU/elf-header.ll
@@ -23,11 +23,11 @@
 ; RUN: llc -mtriple=amdgcn-unknown-mesa3d -filetype=obj < %s | llvm-readobj -file-headers - | FileCheck --check-prefix=GCN --check-prefix=GCN-OSABI-MESA3D %s
 
 ; R600: Format: ELF32-amdgpu
-; R600: Arch: unknown
+; R600: Arch: r600
 ; R600: AddressSize: 32bit
-; GCN: Format: ELF64-amdgpu
-; GCN: Arch: amdgcn
-; GCN: AddressSize: 64bit
+; GCN:  Format: ELF64-amdgpu
+; GCN:  Arch: amdgcn
+; GCN:  AddressSize: 64bit
 
 ; R600-OSABI-NONE:  OS/ABI: SystemV (0x0)
 ; GCN-OSABI-NONE:   OS/ABI: SystemV (0x0)
@@ -36,8 +36,14 @@
 ; GCN-OSABI-MESA3D: OS/ABI: AMDGPU_MESA3D (0x42)
 
 ; R600: Machine: EM_AMDGPU (0xE0)
-; GCN: Machine: EM_AMDGPU (0xE0)
+; R600: Flags [ (0x1)
+; R600:   EF_AMDGPU_ARCH_R600 (0x1)
+; R600: ]
+; GCN:  Machine: EM_AMDGPU (0xE0)
+; GCN:  Flags [ (0x2)
+; GCN:    EF_AMDGPU_ARCH_GCN (0x2)
+; GCN:  ]
 
 define amdgpu_kernel void @elf_header() {
   ret void
-}
\ No newline at end of file
+}
diff --git a/llvm/test/Object/AMDGPU/elf32-r600-definitions.yaml b/llvm/test/Object/AMDGPU/elf32-r600-definitions.yaml
new file mode 100644
index 0000000..56c5f29
--- /dev/null
+++ b/llvm/test/Object/AMDGPU/elf32-r600-definitions.yaml
@@ -0,0 +1,34 @@
+# RUN: yaml2obj %s > %t.o
+# RUN: llvm-readobj -s -file-headers %t.o | FileCheck --check-prefix=ELF %s
+# RUN: obj2yaml %t.o | FileCheck --check-prefix=YAML %s
+
+# ELF: Format: ELF32-amdgpu
+# ELF: Arch: r600
+# ELF: ElfHeader {
+# ELF:   Ident {
+# ELF:     OS/ABI: AMDGPU_HSA (0x40)
+# ELF:     ABIVersion: 0
+# ELF:   }
+# ELF:   Machine: EM_AMDGPU (0xE0)
+# ELF:   Flags [ (0x1)
+# ELF:     EF_AMDGPU_ARCH_R600 (0x1)
+# ELF:   ]
+# ELF: }
+
+# YAML: FileHeader
+# YAML:   Class:   ELFCLASS32
+# YAML:   Data:    ELFDATA2LSB
+# YAML:   OSABI:   ELFOSABI_AMDGPU_HSA
+# YAML:   Type:    ET_REL
+# YAML:   Machine: EM_AMDGPU
+# YAML:   Flags:   [ EF_AMDGPU_ARCH_R600 ]
+
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS32
+  Data:    ELFDATA2LSB
+  OSABI:   ELFOSABI_AMDGPU_HSA
+  Type:    ET_REL
+  Machine: EM_AMDGPU
+  Flags:   [ EF_AMDGPU_ARCH_R600 ]
+...
diff --git a/llvm/test/Object/AMDGPU/elf64-amdgcn-amdhsa-definitions.yaml b/llvm/test/Object/AMDGPU/elf64-amdgcn-amdhsa-definitions.yaml
index 53639e0..1ffea24 100644
--- a/llvm/test/Object/AMDGPU/elf64-amdgcn-amdhsa-definitions.yaml
+++ b/llvm/test/Object/AMDGPU/elf64-amdgcn-amdhsa-definitions.yaml
@@ -1,21 +1,34 @@
 # RUN: yaml2obj %s > %t.o
-# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s
+# RUN: llvm-readobj -s -file-headers %t.o | FileCheck --check-prefix=ELF %s
+# RUN: obj2yaml %t.o | FileCheck --check-prefix=YAML %s
 
-# CHECK: Format: ELF64-amdgpu
-# CHECK: Arch: amdgcn
-# CHECK: ElfHeader {
-# CHECK:   Ident {
-# CHECK:     OS/ABI: AMDGPU_HSA (0x40)
-# CHECK:     ABIVersion: 0
-# CHECK:   }
-# CHECK:   Machine: EM_AMDGPU (0xE0)
-# CHECK: }
+# ELF: Format: ELF64-amdgpu
+# ELF: Arch: amdgcn
+# ELF: ElfHeader {
+# ELF:   Ident {
+# ELF:     OS/ABI: AMDGPU_HSA (0x40)
+# ELF:     ABIVersion: 0
+# ELF:   }
+# ELF:   Machine: EM_AMDGPU (0xE0)
+# ELF:   Flags [ (0x2)
+# ELF:     EF_AMDGPU_ARCH_GCN (0x2)
+# ELF:   ]
+# ELF: }
+
+# YAML: FileHeader
+# YAML:   Class:   ELFCLASS64
+# YAML:   Data:    ELFDATA2LSB
+# YAML:   OSABI:   ELFOSABI_AMDGPU_HSA
+# YAML:   Type:    ET_REL
+# YAML:   Machine: EM_AMDGPU
+# YAML:   Flags:   [ EF_AMDGPU_ARCH_GCN ]
 
 --- !ELF
 FileHeader:
   Class:   ELFCLASS64
   Data:    ELFDATA2LSB
+  OSABI:   ELFOSABI_AMDGPU_HSA
   Type:    ET_REL
   Machine: EM_AMDGPU
-  OSABI:   ELFOSABI_AMDGPU_HSA
+  Flags:   [ EF_AMDGPU_ARCH_GCN ]
 ...
diff --git a/llvm/test/Object/AMDGPU/elf64-amdgcn-amdpal-definitions.yaml b/llvm/test/Object/AMDGPU/elf64-amdgcn-amdpal-definitions.yaml
index 8e39f6d..3ec5fe5 100644
--- a/llvm/test/Object/AMDGPU/elf64-amdgcn-amdpal-definitions.yaml
+++ b/llvm/test/Object/AMDGPU/elf64-amdgcn-amdpal-definitions.yaml
@@ -1,21 +1,34 @@
 # RUN: yaml2obj %s > %t.o
-# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s
+# RUN: llvm-readobj -s -file-headers %t.o | FileCheck --check-prefix=ELF %s
+# RUN: obj2yaml %t.o | FileCheck --check-prefix=YAML %s
 
-# CHECK: Format: ELF64-amdgpu
-# CHECK: Arch: amdgcn
-# CHECK: ElfHeader {
-# CHECK:   Ident {
-# CHECK:     OS/ABI: AMDGPU_PAL (0x41)
-# CHECK:     ABIVersion: 0
-# CHECK:   }
-# CHECK:   Machine: EM_AMDGPU (0xE0)
-# CHECK: }
+# ELF: Format: ELF64-amdgpu
+# ELF: Arch: amdgcn
+# ELF: ElfHeader {
+# ELF:   Ident {
+# ELF:     OS/ABI: AMDGPU_PAL (0x41)
+# ELF:     ABIVersion: 0
+# ELF:   }
+# ELF:   Machine: EM_AMDGPU (0xE0)
+# ELF:   Flags [ (0x2)
+# ELF:     EF_AMDGPU_ARCH_GCN (0x2)
+# ELF:   ]
+# ELF: }
+
+# YAML: FileHeader
+# YAML:   Class:   ELFCLASS64
+# YAML:   Data:    ELFDATA2LSB
+# YAML:   OSABI:   ELFOSABI_AMDGPU_PAL
+# YAML:   Type:    ET_REL
+# YAML:   Machine: EM_AMDGPU
+# YAML:   Flags:   [ EF_AMDGPU_ARCH_GCN ]
 
 --- !ELF
 FileHeader:
   Class:   ELFCLASS64
   Data:    ELFDATA2LSB
+  OSABI:   ELFOSABI_AMDGPU_PAL
   Type:    ET_REL
   Machine: EM_AMDGPU
-  OSABI:   ELFOSABI_AMDGPU_PAL
+  Flags:   [ EF_AMDGPU_ARCH_GCN ]
 ...
diff --git a/llvm/test/Object/AMDGPU/elf64-amdgcn-mesa3d-definitions.yaml b/llvm/test/Object/AMDGPU/elf64-amdgcn-mesa3d-definitions.yaml
index 7fa413f..258bb12 100644
--- a/llvm/test/Object/AMDGPU/elf64-amdgcn-mesa3d-definitions.yaml
+++ b/llvm/test/Object/AMDGPU/elf64-amdgcn-mesa3d-definitions.yaml
@@ -1,21 +1,34 @@
 # RUN: yaml2obj %s > %t.o
-# RUN: llvm-readobj -s -file-headers %t.o | FileCheck %s
+# RUN: llvm-readobj -s -file-headers %t.o | FileCheck --check-prefix=ELF %s
+# RUN: obj2yaml %t.o | FileCheck --check-prefix=YAML %s
 
-# CHECK: Format: ELF64-amdgpu
-# CHECK: Arch: amdgcn
-# CHECK: ElfHeader {
-# CHECK:   Ident {
-# CHECK:     OS/ABI: AMDGPU_MESA3D (0x42)
-# CHECK:     ABIVersion: 0
-# CHECK:   }
-# CHECK:   Machine: EM_AMDGPU (0xE0)
-# CHECK: }
+# ELF: Format: ELF64-amdgpu
+# ELF: Arch: amdgcn
+# ELF: ElfHeader {
+# ELF:   Ident {
+# ELF:     OS/ABI: AMDGPU_MESA3D (0x42)
+# ELF:     ABIVersion: 0
+# ELF:   }
+# ELF:   Machine: EM_AMDGPU (0xE0)
+# ELF:   Flags [ (0x2)
+# ELF:     EF_AMDGPU_ARCH_GCN (0x2)
+# ELF:   ]
+# ELF: }
+
+# YAML: FileHeader
+# YAML:   Class:   ELFCLASS64
+# YAML:   Data:    ELFDATA2LSB
+# YAML:   OSABI:   ELFOSABI_AMDGPU_MESA3D
+# YAML:   Type:    ET_REL
+# YAML:   Machine: EM_AMDGPU
+# YAML:   Flags:   [ EF_AMDGPU_ARCH_GCN ]
 
 --- !ELF
 FileHeader:
   Class:   ELFCLASS64
   Data:    ELFDATA2LSB
+  OSABI:   ELFOSABI_AMDGPU_MESA3D
   Type:    ET_REL
   Machine: EM_AMDGPU
-  OSABI:   ELFOSABI_AMDGPU_MESA3D
+  Flags:   [ EF_AMDGPU_ARCH_GCN ]
 ...
diff --git a/llvm/test/tools/llvm-readobj/amdgpu-elf-definitions.test b/llvm/test/tools/llvm-readobj/amdgpu-elf-definitions.test
index e52f987..9b077ff 100644
--- a/llvm/test/tools/llvm-readobj/amdgpu-elf-definitions.test
+++ b/llvm/test/tools/llvm-readobj/amdgpu-elf-definitions.test
@@ -1,7 +1,7 @@
 RUN: llvm-readobj -file-headers -program-headers -sections -symbols %p/Inputs/trivial.obj.elf-amdhsa-gfx803 | FileCheck %s
 
 CHECK: Format: ELF64-amdgpu
-CHECK: Arch: amdgcn
+CHECK: Arch: unknown
 CHECK: ElfHeader {
 CHECK:   Ident {
 CHECK:     OS/ABI: AMDGPU_HSA (0x40)