Text file src/simd/_gen/simdgen/ops/Compares/go.yaml

     1  !sum
     2  # Ints
     3  - go: Equal
     4    asm: "V?PCMPEQ[BWDQ]"
     5    in:
     6    - &any
     7      go: $t
     8    - *any
     9    out:
    10    - &anyvregToMask
    11      go: $t
    12      overwriteBase: int
    13      overwriteClass: mask
    14  - go: Greater
    15    asm: "V?PCMPGT[BWDQ]"
    16    in:
    17    - &int
    18      go: $t
    19      base: int
    20    - *int
    21    out:
    22    - *anyvregToMask
    23  # 256-bit VCMPGTQ's output elemBits is marked 32-bit in the XED data, we
    24  # believe this is an error, so add this definition to overwrite.
    25  - go: Greater
    26    asm: "VPCMPGTQ"
    27    in:
    28    - &int64
    29      go: $t
    30      base: int
    31      elemBits: 64
    32    - *int64
    33    out:
    34    - base: int
    35      elemBits: 32
    36      overwriteElementBits: 64
    37      overwriteClass: mask
    38      overwriteBase: int
    39  
    40  # TODO these are redundant with VPCMP operations.
    41  # AVX-512 compares produce masks.
    42  - go: Equal
    43    asm: "V?PCMPEQ[BWDQ]"
    44    in:
    45    - *any
    46    - *any
    47    out:
    48    - class: mask
    49  - go: Greater
    50    asm: "V?PCMPGT[BWDQ]"
    51    in:
    52    - *int
    53    - *int
    54    out:
    55    - class: mask
    56  
    57  # MASKED signed comparisons for X/Y registers
    58  # unmasked would clash with emulations on AVX2
    59  - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual)
    60    regexpTag: "compares"
    61    asm: "VPCMP[BWDQ]"
    62    in:
    63    - &int
    64      bits: (128|256)
    65      go: $t
    66      base: int
    67    - *int
    68    - class: immediate
    69      const: 0 # Just a placeholder, will be overwritten by const imm porting.
    70    inVariant:
    71    - class: mask
    72    out:
    73    - class: mask
    74  
    75  # MASKED unsigned comparisons for X/Y registers
    76  # unmasked would clash with emulations on AVX2
    77  - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual)
    78    regexpTag: "compares"
    79    asm: "VPCMPU[BWDQ]"
    80    in:
    81    - &uint
    82      bits: (128|256)
    83      go: $t
    84      base: uint
    85    - *uint
    86    - class: immediate
    87      const: 0
    88    inVariant:
    89    - class: mask
    90    out:
    91    - class: mask
    92  
    93  # masked/unmasked signed comparisons for Z registers
    94  - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual)
    95    regexpTag: "compares"
    96    asm: "VPCMP[BWDQ]"
    97    in:
    98    - &int
    99      bits: 512
   100      go: $t
   101      base: int
   102    - *int
   103    - class: immediate
   104      const: 0 # Just a placeholder, will be overwritten by const imm porting.
   105    out:
   106    - class: mask
   107  
   108  # masked/unmasked unsigned comparisons for Z registers
   109  - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual)
   110    regexpTag: "compares"
   111    asm: "VPCMPU[BWDQ]"
   112    in:
   113    - &uint
   114      bits: 512
   115      go: $t
   116      base: uint
   117    - *uint
   118    - class: immediate
   119      const: 0
   120    out:
   121    - class: mask
   122  
   123  # Floats
   124  - go: Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual|IsNan
   125    regexpTag: "compares"
   126    asm: "VCMPP[SD]"
   127    in:
   128    - &float
   129      go: $t
   130      base: float
   131    - *float
   132    - class: immediate
   133      const: 0
   134    out:
   135    - go: $t
   136      overwriteBase: int
   137      overwriteClass: mask
   138  - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual|IsNan)
   139    regexpTag: "compares"
   140    asm: "VCMPP[SD]"
   141    in:
   142    - *float
   143    - *float
   144    - class: immediate
   145      const: 0
   146    out:
   147    - class: mask

View as plain text