Commit 12a813c1 by Uros Bizjak

re PR target/77756 (__get_cpuid() returns wrong values for level 7 (extended features))

	PR target/77756
	* config/i386/cpuid.h (__get_cpuid): Handle CPUID level >= 7.

testsuite/ChangeLog:

	PR target/77756
	* gcc.target/i386/pr77756.c: New test.

From-SVN: r240597
parent 88000fd1
2016-09-28 Uros Bizjak <ubizjak@gmail.com>
PR target/77756
* config/i386/cpuid.h (__get_cpuid): Handle CPUID level >= 7.
2016-09-28 Jakub Jelinek <jakub@redhat.com> 2016-09-28 Jakub Jelinek <jakub@redhat.com>
* gimple-ssa-sprintf.c: Fix comment formatting. * gimple-ssa-sprintf.c: Fix comment formatting.
...@@ -248,8 +253,8 @@ ...@@ -248,8 +253,8 @@
2016-09-26 Kugan Vivekanandarajah <kuganv@linaro.org> 2016-09-26 Kugan Vivekanandarajah <kuganv@linaro.org>
PR middle-end/77719 PR middle-end/77719
* tree-ssa-reassoc.c (make_new_ssa_for_def): Use gimple_get_lhs to get lhs * tree-ssa-reassoc.c (make_new_ssa_for_def): Use gimple_get_lhs
instead of gimple_assign_lhs as stmt can be builtins too. to get lhs instead of gimple_assign_lhs as stmt can be builtins too.
2016-09-26 Thomas Preud'homme <thomas.preudhomme@arm.com> 2016-09-26 Thomas Preud'homme <thomas.preudhomme@arm.com>
...@@ -314,7 +319,7 @@ ...@@ -314,7 +319,7 @@
* tsan.c (instrument_memory_accesses): Likewise. * tsan.c (instrument_memory_accesses): Likewise.
2016-09-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2016-09-26 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
Alexander Monakov <amonakov@ispras.ru> Alexander Monakov <amonakov@ispras.ru>
* regrename.c (rename_chains): Check * regrename.c (rename_chains): Check
HARD_FRAME_POINTER_IS_FRAME_POINTER rather than HARD_FRAME_POINTER_IS_FRAME_POINTER rather than
...@@ -333,10 +338,8 @@ ...@@ -333,10 +338,8 @@
2016-09-26 Martin Liska <mliska@suse.cz> 2016-09-26 Martin Liska <mliska@suse.cz>
PR gcov-profile/23332 PR gcov-profile/23332
* profile.c (instrument_values): Do not handle * profile.c (instrument_values): Do not handle HIST_TYPE_CONST_DELTA.
HIST_TYPE_CONST_DELTA. * tree-profile.c (gimple_gen_const_delta_profiler): Remove.
* tree-profile.c (gimple_gen_const_delta_profiler):
Remove.
* value-prof.c (dump_histogram_value): Do not handle * value-prof.c (dump_histogram_value): Do not handle
HIST_TYPE_CONST_DELTA. HIST_TYPE_CONST_DELTA.
(stream_in_histogram_value): Likewise. (stream_in_histogram_value): Likewise.
...@@ -360,8 +363,7 @@ ...@@ -360,8 +363,7 @@
2016-09-26 Andre Vieira <andre.simoesdiasvieira@arm.com> 2016-09-26 Andre Vieira <andre.simoesdiasvieira@arm.com>
* target.def(elf_flags_numeric): Change documentation to * target.def(elf_flags_numeric): Change documentation to present tense.
present tense.
* doc/tm.texi: Regenerate. * doc/tm.texi: Regenerate.
2016-09-26 Marek Polacek <polacek@redhat.com> 2016-09-26 Marek Polacek <polacek@redhat.com>
...@@ -906,13 +908,13 @@ ...@@ -906,13 +908,13 @@
2016-09-23 Dominik Vogt <vogt@linux.vnet.ibm.com> 2016-09-23 Dominik Vogt <vogt@linux.vnet.ibm.com>
* config/s390/predicates.md ("contiguous_bitmask_operand"): Adapt to new * config/s390/predicates.md ("contiguous_bitmask_operand"): Adapt to
interface of s390_contiguous_bitmask_p. new interface of s390_contiguous_bitmask_p.
("contiguous_bitmask_nowrap_operand"): New predicate. ("contiguous_bitmask_nowrap_operand"): New predicate.
* ("*anddi3_cc", "*anddi3_cconly", "*anddi3"): Replace NxxDq with NxxDw. ("*anddi3_cc", "*anddi3_cconly", "*anddi3"): Replace NxxDq with NxxDw.
* config/s390/constraints.md ("NxxDw", "NxxSq"): Adapt to new interface * config/s390/constraints.md ("NxxDw", "NxxSq"): Adapt to new interface
of s390_contiguous_bitmask_p. of s390_contiguous_bitmask_p.
* ("NxxDw"): Rename NxxDq constraint to NxxDw. ("NxxDw"): Rename NxxDq constraint to NxxDw.
("NxxSw"): New constraint. ("NxxSw"): New constraint.
* config/s390/s390.md ("*andsi3_zarch"): Enable bitmask wraparound. * config/s390/s390.md ("*andsi3_zarch"): Enable bitmask wraparound.
* config/s390/s390-protos.h (s390_contiguous_bitmask_p): Updated * config/s390/s390-protos.h (s390_contiguous_bitmask_p): Updated
...@@ -1023,8 +1025,7 @@ ...@@ -1023,8 +1025,7 @@
2016-09-23 Jakub Jelinek <jakub@redhat.com> 2016-09-23 Jakub Jelinek <jakub@redhat.com>
* ipa-cp.c (ipcp_store_vr_results): Avoid static local * ipa-cp.c (ipcp_store_vr_results): Avoid static local var zero.
var zero.
* sreal.h (sreal::min, sreal::max): Avoid static local vars, * sreal.h (sreal::min, sreal::max): Avoid static local vars,
construct values without normalization. construct values without normalization.
* tree-ssa-sccvn.c (vn_reference_lookup_3): Don't initialize * tree-ssa-sccvn.c (vn_reference_lookup_3): Don't initialize
...@@ -1051,8 +1052,7 @@ ...@@ -1051,8 +1052,7 @@
(*arm_movhi_fp16): New. (*arm_movhi_fp16): New.
(*thumb2_movhi_fp16): New. (*thumb2_movhi_fp16): New.
(*movhf_vfp_fp16): New. (*movhf_vfp_fp16): New.
(*movhf_vfp_neon): Disable when VFP FP16 instructions are (*movhf_vfp_neon): Disable when VFP FP16 instructions are available.
available.
(*movhf_vfp): Likewise. (*movhf_vfp): Likewise.
(extendhfsf2): Enable when VFP FP16 instructions are available. (extendhfsf2): Enable when VFP FP16 instructions are available.
(truncsfhf2): Enable when VFP FP16 instructions are available. (truncsfhf2): Enable when VFP FP16 instructions are available.
...@@ -1108,8 +1108,7 @@ ...@@ -1108,8 +1108,7 @@
2016-09-23 Jiong Wang <jiong.wang@arm.com> 2016-09-23 Jiong Wang <jiong.wang@arm.com>
Matthew Wahab <matthew.wahab@arm.com> Matthew Wahab <matthew.wahab@arm.com>
* config/arm/arm.c (output_move_vfp): Weaken assert to allow * config/arm/arm.c (output_move_vfp): Weaken assert to allow HImode.
HImode.
(arm_hard_regno_mode_ok): Allow HImode values in VFP registers. (arm_hard_regno_mode_ok): Allow HImode values in VFP registers.
* config/arm/arm.md (*movhi_bytes): Disable when VFP registers are * config/arm/arm.md (*movhi_bytes): Disable when VFP registers are
available. Also fix some white-space. available. Also fix some white-space.
...@@ -1138,8 +1137,7 @@ ...@@ -1138,8 +1137,7 @@
2016-09-23 Martin Liska <mliska@suse.cz> 2016-09-23 Martin Liska <mliska@suse.cz>
* ipa-icf.c (sem_variable::merge): Replace adress * ipa-icf.c (sem_variable::merge): Replace adress with address.
with address.
2016-09-23 Matthew Wahab <matthew.wahab@arm.com> 2016-09-23 Matthew Wahab <matthew.wahab@arm.com>
...@@ -1167,8 +1165,7 @@ ...@@ -1167,8 +1165,7 @@
2016-09-23 Martin Liska <mliska@suse.cz> 2016-09-23 Martin Liska <mliska@suse.cz>
* doc/extend.texi: Remove fused-madd from i386 target * doc/extend.texi: Remove fused-madd from i386 target options.
options.
2016-09-23 Martin Liska <mliska@suse.cz> 2016-09-23 Martin Liska <mliska@suse.cz>
...@@ -1260,8 +1257,7 @@ ...@@ -1260,8 +1257,7 @@
2016-09-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> 2016-09-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* emit-rtl.c (next_active_insn): Change argument type to * emit-rtl.c (next_active_insn): Change argument type to rtx_insn *.
rtx_insn *.
(prev_active_insn): Likewise. (prev_active_insn): Likewise.
(active_insn_p): Likewise. (active_insn_p): Likewise.
* rtl.h: Adjust prototypes. * rtl.h: Adjust prototypes.
...@@ -1297,8 +1293,7 @@ ...@@ -1297,8 +1293,7 @@
2016-09-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> 2016-09-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* emit-rtl.c (next_nondebug_insn): Change argument type to * emit-rtl.c (next_nondebug_insn): Change argument type to rtx_insn *.
rtx_insn *.
(prev_nondebug_insn): Likewise. (prev_nondebug_insn): Likewise.
* loop-doloop.c (doloop_condition_get): Likewise. * loop-doloop.c (doloop_condition_get): Likewise.
* rtl.h: Adjust prototype. * rtl.h: Adjust prototype.
...@@ -1306,8 +1301,7 @@ ...@@ -1306,8 +1301,7 @@
2016-09-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> 2016-09-22 Trevor Saunders <tbsaunde+gcc@tbsaunde.org>
* emit-rtl.c (next_nonnote_insn): Change argument type to * emit-rtl.c (next_nonnote_insn): Change argument type to rtx_insn *.
rtx_insn *.
(prev_nonnote_insn): Likewise. (prev_nonnote_insn): Likewise.
* jump.c (reversed_comparison_code_parts): Likewise. * jump.c (reversed_comparison_code_parts): Likewise.
(reversed_comparison): Likewise. (reversed_comparison): Likewise.
...@@ -1343,8 +1337,7 @@ ...@@ -1343,8 +1337,7 @@
* config/m32r/m32r.c (m32r_expand_epilogue): Likewise. * config/m32r/m32r.c (m32r_expand_epilogue): Likewise.
* config/nds32/nds32-protos.h (nds32_target_alignment): Likewise. * config/nds32/nds32-protos.h (nds32_target_alignment): Likewise.
* config/nds32/nds32.c (nds32_target_alignment): Likewise. * config/nds32/nds32.c (nds32_target_alignment): Likewise.
* config/rl78/rl78.c (rl78_alloc_physical_registers_op2): * config/rl78/rl78.c (rl78_alloc_physical_registers_op2): Likewise.
* Likewise.
(rl78_alloc_physical_registers_cmp): Likewise. (rl78_alloc_physical_registers_cmp): Likewise.
(rl78_alloc_physical_registers_umul): Likewise. (rl78_alloc_physical_registers_umul): Likewise.
(rl78_calculate_death_notes): Likewise. (rl78_calculate_death_notes): Likewise.
...@@ -1527,7 +1520,7 @@ ...@@ -1527,7 +1520,7 @@
(handle_pure_call): Likewise. (handle_pure_call): Likewise.
2016-09-21 Richard Biener <rguenther@suse.de> 2016-09-21 Richard Biener <rguenther@suse.de>
Jakub Jelinek <jakub@redhat.com> Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/77621 PR tree-optimization/77621
* tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Split * tree-vect-data-refs.c (vect_analyze_data_ref_accesses): Split
...@@ -1569,8 +1562,7 @@ ...@@ -1569,8 +1562,7 @@
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org> 2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
* tree-vrp.c (get_value_range): Teach PARM_DECL to use ipa-vrp * tree-vrp.c (get_value_range): Teach PARM_DECL to use ipa-vrp results.
results.
2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org> 2016-09-21 Kugan Vivekanandarajah <kuganv@linaro.org>
...@@ -1632,8 +1624,7 @@ ...@@ -1632,8 +1624,7 @@
(evrp_dom_walker::push_value_range): Likewise. (evrp_dom_walker::push_value_range): Likewise.
(evrp_dom_walker::pop_value_range): Likewise. (evrp_dom_walker::pop_value_range): Likewise.
(execute_early_vrp): Likewise. (execute_early_vrp): Likewise.
(execute_vrp): Call vrp_initialize_lattice and (execute_vrp): Call vrp_initialize_lattice and vrp_free_lattice.
vrp_free_lattice.
(make_pass_early_vrp): New. (make_pass_early_vrp): New.
2016-09-20 Uros Bizjak <ubizjak@gmail.com> 2016-09-20 Uros Bizjak <ubizjak@gmail.com>
......
...@@ -244,6 +244,16 @@ __get_cpuid (unsigned int __level, ...@@ -244,6 +244,16 @@ __get_cpuid (unsigned int __level,
if (__get_cpuid_max (__ext, 0) < __level) if (__get_cpuid_max (__ext, 0) < __level)
return 0; return 0;
__cpuid (__level, *__eax, *__ebx, *__ecx, *__edx); if (__ext)
__cpuid (__level, *__eax, *__ebx, *__ecx, *__edx);
else
{
if (__level >= 13)
__cpuid_count (__level, 1, *__eax, *__ebx, *__ecx, *__edx);
else if (__level >= 7)
__cpuid_count (__level, 0, *__eax, *__ebx, *__ecx, *__edx);
else
__cpuid (__level, *__eax, *__ebx, *__ecx, *__edx);
}
return 1; return 1;
} }
2016-09-28 Uros Bizjak <ubizjak@gmail.com>
PR target/77756
* gcc.target/i386/pr77756.c: New test.
2016-09-28 Martin Sebor <msebor@redhat.com> 2016-09-28 Martin Sebor <msebor@redhat.com>
PR middle-end/77721 PR middle-end/77721
...@@ -115,7 +120,7 @@ ...@@ -115,7 +120,7 @@
2016-09-26 Thomas Preud'homme <thomas.preudhomme@arm.com> 2016-09-26 Thomas Preud'homme <thomas.preudhomme@arm.com>
* gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust regex to accept * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Adjust regex to accept
singular form of byte when quantity is unknown. singular form of byte when quantity is unknown.
2016-09-26 Marek Polacek <polacek@redhat.com> 2016-09-26 Marek Polacek <polacek@redhat.com>
...@@ -169,7 +174,7 @@ ...@@ -169,7 +174,7 @@
2016-09-25 Steven G. Kargl <kargl@gcc.gnu.org> 2016-09-25 Steven G. Kargl <kargl@gcc.gnu.org>
PR fortran/77429 PR fortran/77429
* gfortran.dg/pr77429.f90: New test. * gfortran.dg/pr77429.f90: New test.
2016-09-25 Steven G. Kargl <kargl@gcc.gnu.org> 2016-09-25 Steven G. Kargl <kargl@gcc.gnu.org>
...@@ -339,38 +344,24 @@ ...@@ -339,38 +344,24 @@
tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is tests, enabled if macro __ARM_FEATURE_FP16_VECTOR_ARITHMETIC is
defined. defined.
* gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c: Likewise. * gcc.target/aarch64/advsimd-intrinsics/vmul_lane.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vmul_n.c: Likewise.
Likewise. * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vneg.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vneg.c:
Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc: Likewise. * gcc.target/aarch64/advsimd-intrinsics/vpXXX.inc: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpadd.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpadd.c: Likewise.
Likewise. * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpmax.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpmax.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpmin.c: Likewise.
Likewise. * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrecpe.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vpmin.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrecps.c: Likewise.
Likewise. * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrnd.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrecpe.c:
Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrecps.c:
Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrnd.c:
Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vrndX.inc: Likewise. * gcc.target/aarch64/advsimd-intrinsics/vrndX.inc: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrnda.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrnda.c: Likewise.
Likewise. * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndm.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndm.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndn.c: Likewise.
Likewise. * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndp.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndn.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndx.c: Likewise.
Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndp.c:
Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vrndx.c:
Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vrsqrte.c: Likewise. * gcc.target/aarch64/advsimd-intrinsics/vrsqrte.c: Likewise.
* gcc.target/aarch64/advsimd-intrinsics/vrsqrts.c: Likewise. * gcc.target/aarch64/advsimd-intrinsics/vrsqrts.c: Likewise.
* gcc.target/gcc.target/aarch64/advsimd-intrinsics/vsub.c: * gcc.target/gcc.target/aarch64/advsimd-intrinsics/vsub.c: Likewise.
Likewise.
2016-09-23 Jiong Wang <jiong.wang@arm.com> 2016-09-23 Jiong Wang <jiong.wang@arm.com>
Matthew Wahab <matthew.wahab@arm.com> Matthew Wahab <matthew.wahab@arm.com>
......
/* { dg-do run } */
#include "cpuid.h"
int
main ()
{
__builtin_cpu_init ();
if (__builtin_cpu_supports ("avx2"))
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (7, &eax, &ebx, &ecx, &edx))
__builtin_abort ();
if (!(ebx & bit_AVX2))
__builtin_abort ();
}
return 0;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment