Edit

IABSD.fr/xenocara/lib/mesa/src/intel/executor/examples/dp4a.lua

Branch :

  • Show log

    Commit

  • Author : jsg
    Date : 2025-06-05 11:23:11
    Hash : 67d6f117
    Message : Import Mesa 25.0.7

  • lib/mesa/src/intel/executor/examples/dp4a.lua
  • --[[
    
    Execute the example from the Dot Product 4 Accumulate
    instruction as seen in the PRM.
    
        mov (1) r1.0:d 0x0102037F:d
        // (char4)(0x1,0x2,0x3,0x7F)
        mov (1) r2.0:d 50:d
        dp4a (1) r3.0:d r2:d r1:d r1:d
        // r3.0 = 50 + (0x1*0x1 + 0x2*0x2 + 0x3*0x3 + 0x7F*0x7F)
        // = 50 + (1 + 4 + 9 + 16129)
        // = 16193
    
    --]]
    
    check_ver(12)
    
    function DP4A(a, b, c)
      local r = c
      for i = 1, 4 do
        r = r + a[i] * b[i]
      end
      return r
    end
    
    local r = execute {
      src = [[
        @id   g9
    
        @mov  g1  0x0102037F
        @mov  g2  50
    
        dp4a(8)  g3<1>UD  g2<8,8,1>UD  g1<8,8,1>UD  g1<8,8,1>UD  { align1 @1 1Q };
    
        @write g9 g3
        @eot
      ]],
    }
    
    print("expected", DP4A({1,2,3,0x7F}, {1,2,3,0x7F}, 50))
    print("calculated", r[0])