...
Run Format

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

Documentation: simd/archsimd/_gen/simdgen/ops/Compares

     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)
   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)
   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