I encountered this while trying to understand ELF (Executable and Linking Format). 

Steps I followed

1. Wrote a simple application.
`main.c` containing
`int main(int argc, char **argv){ return 0;}`
2. Compiled in linux environment using gcc. (Done on intel laptop) 
Simplest command possible
`gcc main.c`
3. Now when I run `a.out`, it runs without any issue. So build is fine.
4. I used `readelf` tool to retrieve the ELF information, where in machine field is put as `Advanced Micro Devices X86-64`.
This part puzzled me.

So I checked the file header of `a.out`, it was as per ELF-64 specification (`Value 64 - EM_X86_64`).

Would anyone care to explain, why does the executable, built in 64 bit mode on linux, show machine type as `AMD x86 64`?