8041957: -XX:UseAVX=0 cause assert(UseAVX) failed

Tue, 29 Apr 2014 12:20:53 -0700

author
kvn
date
Tue, 29 Apr 2014 12:20:53 -0700
changeset 6656
1eba0601f0dd
parent 6655
653e11c86c5a
child 6657
3636afd5ec1a

8041957: -XX:UseAVX=0 cause assert(UseAVX) failed
Summary: temporary set UseAVX=1 and UseSSE=2 in generate_get_cpu_info()
Reviewed-by: twisti

src/cpu/x86/vm/assembler_x86.cpp file | annotate | diff | comparison | revisions
src/cpu/x86/vm/vm_version_x86.cpp file | annotate | diff | comparison | revisions
     1.1 --- a/src/cpu/x86/vm/assembler_x86.cpp	Tue Apr 29 10:29:56 2014 -0700
     1.2 +++ b/src/cpu/x86/vm/assembler_x86.cpp	Tue Apr 29 12:20:53 2014 -0700
     1.3 @@ -1766,7 +1766,7 @@
     1.4  
     1.5  // Move Unaligned 256bit Vector
     1.6  void Assembler::vmovdqu(XMMRegister dst, XMMRegister src) {
     1.7 -  assert(UseAVX, "");
     1.8 +  assert(UseAVX > 0, "");
     1.9    bool vector256 = true;
    1.10    int encode = vex_prefix_and_encode(dst, xnoreg, src, VEX_SIMD_F3, vector256);
    1.11    emit_int8(0x6F);
    1.12 @@ -1774,7 +1774,7 @@
    1.13  }
    1.14  
    1.15  void Assembler::vmovdqu(XMMRegister dst, Address src) {
    1.16 -  assert(UseAVX, "");
    1.17 +  assert(UseAVX > 0, "");
    1.18    InstructionMark im(this);
    1.19    bool vector256 = true;
    1.20    vex_prefix(dst, xnoreg, src, VEX_SIMD_F3, vector256);
    1.21 @@ -1783,7 +1783,7 @@
    1.22  }
    1.23  
    1.24  void Assembler::vmovdqu(Address dst, XMMRegister src) {
    1.25 -  assert(UseAVX, "");
    1.26 +  assert(UseAVX > 0, "");
    1.27    InstructionMark im(this);
    1.28    bool vector256 = true;
    1.29    // swap src<->dst for encoding
     2.1 --- a/src/cpu/x86/vm/vm_version_x86.cpp	Tue Apr 29 10:29:56 2014 -0700
     2.2 +++ b/src/cpu/x86/vm/vm_version_x86.cpp	Tue Apr 29 12:20:53 2014 -0700
     2.3 @@ -263,6 +263,10 @@
     2.4      // and check upper YMM bits after it.
     2.5      //
     2.6      VM_Version::set_avx_cpuFeatures(); // Enable temporary to pass asserts
     2.7 +    intx saved_useavx = UseAVX;
     2.8 +    intx saved_usesse = UseSSE;
     2.9 +    UseAVX = 1;
    2.10 +    UseSSE = 2;
    2.11  
    2.12      // load value into all 32 bytes of ymm7 register
    2.13      __ movl(rcx, VM_Version::ymm_test_value());
    2.14 @@ -292,6 +296,8 @@
    2.15  #endif
    2.16  
    2.17      VM_Version::clean_cpuFeatures();
    2.18 +    UseAVX = saved_useavx;
    2.19 +    UseSSE = saved_usesse;
    2.20  
    2.21      //
    2.22      // cpuid(0x7) Structured Extended Features

mercurial