vfmadd231ps Floating Point Exception c0000090

173 Views Asked by At

What is the problem with the vfmadd231ps instruction which throws a floating point Exception?

    00007ff9`88f05108 62b26558b81482  vfmadd231ps zmm2,zmm3,dword bcst [rdx+r8*4] ds:00000220`7de9dc00=00000000
    
    0:112> .exr -1
        ExceptionAddress: 00007ff988f05108 
           ExceptionCode: c0000090
          ExceptionFlags: 00000000
        NumberParameters: 2
           Parameter[0]: 0000000000000000
           Parameter[1]: 0000000000001923
        
        
    0:112> rZ
                zmm0=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                zmm1=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                zmm2=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
                zmm3=0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
        

0:112> r zmm2:f
zmm2=           0            0            0            0            0            0            0            0            0            0            0            0            0            0            0            0
0:112> r zmm3:f
zmm3=           0            0            0            0            0            0            0            0            0            0            0            0            0            0            0            0
0:112> r zmm3:ub
zmm3=           0            0            0            0            0            0            0            0            0            0            0            0            0            0            0            0
0:112> r zmm2:ub
zmm2=           0            0            0            0            0            0            0            0            0            0            0            0            0            0            0            0

    0:112> db 0220`7de9dc00 L0x40
    00000220`7de9dc00  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
    00000220`7de9dc10  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
    00000220`7de9dc20  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
    00000220`7de9dc30  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
    
            
mxcsr=1923

According to https://help.totalview.io/previous_releases/2019/html/index.html#page/Reference_Guide/Intelx86MXSCRRegister.html

the flag 0x1923 indicates

  • 0x1 Invalid Operation Flag
  • 0x2 Denormal Flag
  • 0x20 Precision Flag
  • 0x1000 Precision Mask
  • 0x100 Denormal Mask
  • 0x800 Underflow Mask

Which value of the register is responsible for throwing an exception and what is wrong with the inputs? I am no AVX expert. To me Fused Multiply Add with all zeros looks ok to me.

0

There are 0 best solutions below