1. 27 Apr, 2016 2 commits
  2. 22 Apr, 2016 1 commit
  3. 21 Apr, 2016 1 commit
  4. 18 Apr, 2016 1 commit
  5. 14 Apr, 2016 2 commits
    • fix the problem that spec constant composite instruction being used when only… · 1f2820a3
      qining authored
      fix the problem that spec constant composite instruction being used when only front-end constants are used in the constructor
    • Fix spec const construtor for matrix and vector · 27e04a00
      qining authored
      Fix issue: #237
      
      1. The code generated for matrix constructor should 1) build column
      vectors first, 2) build matrix with the vectors.
      
      2. When there is only one scalar type constituent in vector's
      constructor, we should populate the constituent to fill all the slots in
      the vector. As for matrix, the single constituent should be populated to
      the diagonal positions (top-left to bottom-right diagonal).
      
      remove createSpvConstantFromConstSubTree()
  6. 13 Apr, 2016 5 commits
  7. 12 Apr, 2016 1 commit
  8. 11 Apr, 2016 1 commit
  9. 09 Apr, 2016 2 commits
  10. 07 Apr, 2016 2 commits
  11. 06 Apr, 2016 5 commits
  12. 04 Apr, 2016 3 commits
  13. 03 Apr, 2016 4 commits
  14. 02 Apr, 2016 3 commits
  15. 31 Mar, 2016 5 commits
  16. 30 Mar, 2016 1 commit
    • Spec Constant Operations · 13545206
      qining authored
      Approach:
      Add a flag in `Builder` to indicate 'spec constant mode' and 'normal
      mode'. When the builder is in 'normal mode', nothing changed. When the
      builder is in 'spec constant mode', binary, unary and other instruction
      creation rountines will be redirected to `createSpecConstantOp()` to
      create instrution at module level with `OpSpecConstantOp <original
      opcode> <operands>`.
      
      'spec constant mode' should be enabled if and only if we are creating
      spec constants. So a flager setter/recover guard is added when handling
      binary/unary nodes in `createSpvConstantsFromConstSubTree()`.
      
      Note when handling spec constants which are represented as ConstantUnion
      Node, we should not use `OpSpecConstantOp` to initialize the composite
      constant, so builder is set to 'normal mode'.
      
      Tests:
      Tests are added in Test/spv.specConstantOperations.vert, including:
      
      1) Arithmetic, shift opeations for both scalar and composite type spec constants.
      2) Size conversion from/to float and double for both scalar and vector.
      3) Bitwise and/or/xor for both scalar and vector.
      4) Unary negate/not for both scalar and vector.
      5) Vector swizzles.
      6) Comparisons for scalars.
      7) == and != for composite type spec constants
      
      Issues:
      1) To implement == and != for composite type spec constants, the Spec needs
      to allow OpAll, OpAny, OpFOrdEqual, OpFUnordEqual, OpOrdNotEqual,
      OpFUnordNotEqual. Currently none of them are allowed in the Spec.
  17. 27 Mar, 2016 1 commit