Correct CpuMax in i386-opc.h

CpuMax should be CpuIntel64, not CpuNo64.  i386-gen.c is updated to
verify that CpuMax is correct.  X86 assembler is updated to properly
set cpuamd64 and cpuintel64.

gas/

	PR gas/20154
	* config/tc-i386.c (intel64): New.
	(cpu_flags_match): Set cpuamd64 and cpuintel64.
	(md_parse_option): Set intel64 instead of cpuamd64 and
	cpuintel64.

opcodes/

	PR gas/20154
	* i386-gen.c (main): Fail if CpuMax is incorrect.
	* i386-opc.h (CpuMax): Set to CpuIntel64.
	* i386-tbl.h: Regenerated.
This commit is contained in:
H.J. Lu 2016-05-27 06:55:42 -07:00
parent 1690f1db1a
commit e89c5eaa72
6 changed files with 39 additions and 12 deletions

View File

@ -1,3 +1,11 @@
2016-05-27 H.J. Lu <hongjiu.lu@intel.com>
PR gas/20154
* config/tc-i386.c (intel64): New.
(cpu_flags_match): Set cpuamd64 and cpuintel64.
(md_parse_option): Set intel64 instead of cpuamd64 and
cpuintel64.
2016-05-27 H.J. Lu <hongjiu.lu@intel.com>
* config/tc-i386.c (cpu_flags_match): Don't clear cpu64 nor

View File

@ -535,6 +535,10 @@ static int shared = 0;
0 if att syntax. */
static int intel_syntax = 0;
/* 1 for Intel64 ISA,
0 if AMD64 ISA. */
static int intel64;
/* 1 for intel mnemonic,
0 if att mnemonic. */
static int intel_mnemonic = !SYSV386_COMPAT;
@ -1537,6 +1541,11 @@ cpu_flags_match (const insn_template *t)
/* This instruction is available only on some archs. */
i386_cpu_flags cpu = cpu_arch_flags;
/* Set cpuamd64 and cpuintel64 here since they may be changed by
set_cpu_arch. */
cpu_arch_flags.bitfield.cpuamd64 = !intel64;
cpu_arch_flags.bitfield.cpuintel64 = intel64;
cpu = cpu_flags_and (x, cpu);
if (!cpu_flags_all_zero (&cpu))
{
@ -10107,17 +10116,11 @@ md_parse_option (int c, const char *arg)
break;
case OPTION_MAMD64:
cpu_arch_flags.bitfield.cpuamd64 = 1;
cpu_arch_flags.bitfield.cpuintel64 = 0;
cpu_arch_isa_flags.bitfield.cpuamd64 = 1;
cpu_arch_isa_flags.bitfield.cpuintel64 = 0;
intel64 = 0;
break;
case OPTION_MINTEL64:
cpu_arch_flags.bitfield.cpuamd64 = 0;
cpu_arch_flags.bitfield.cpuintel64 = 1;
cpu_arch_isa_flags.bitfield.cpuamd64 = 0;
cpu_arch_isa_flags.bitfield.cpuintel64 = 1;
intel64 = 1;
break;
default:

View File

@ -1,3 +1,10 @@
2016-05-27 H.J. Lu <hongjiu.lu@intel.com>
PR gas/20154
* i386-gen.c (main): Fail if CpuMax is incorrect.
* i386-opc.h (CpuMax): Set to CpuIntel64.
* i386-tbl.h: Regenerated.
2016-05-27 Nick Clifton <nickc@redhat.com>
PR target/20150

View File

@ -1379,7 +1379,16 @@ main (int argc, char **argv)
srcdir, xstrerror (errno));
/* Check the unused bitfield in i386_cpu_flags. */
#ifndef CpuUnused
#ifdef CpuUnused
if (cpu_flags[ARRAY_SIZE (cpu_flags) - 2].position != CpuMax)
fail (_("CpuMax != %d!\n"),
cpu_flags[ARRAY_SIZE (cpu_flags) - 2].position);
#else
if (cpu_flags[ARRAY_SIZE (cpu_flags) - 1].position != CpuMax)
fail (_("CpuMax != %d!\n"),
cpu_flags[ARRAY_SIZE (cpu_flags) - 1].position);
c = CpuNumOfBits - CpuMax - 1;
if (c)
fail (_("%d unused bits in i386_cpu_flags.\n"), c);

View File

@ -211,7 +211,7 @@ enum
/* Intel64 support required */
CpuIntel64,
/* The last bitfield in i386_cpu_flags. */
CpuMax = CpuNo64
CpuMax = CpuIntel64
};
#define CpuNumOfUints \

View File

@ -3200,7 +3200,7 @@ const insn_template i386_optab[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 1 } },
0, 0, 0, 0, 0, 1, 0, 0, 1, 0 } },
{ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1,
1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@ -3323,7 +3323,7 @@ const insn_template i386_optab[] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 1, 0, 0, 0, 1 } },
0, 0, 0, 0, 0, 1, 0, 0, 1, 0 } },
{ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1,
1, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,