| !sum |
| # Ints |
| - go: Equal |
| asm: "V?PCMPEQ[BWDQ]" |
| in: |
| - &any |
| go: $t |
| - *any |
| out: |
| - &anyvregToMask |
| go: $t |
| overwriteBase: int |
| overwriteClass: mask |
| - go: Greater |
| asm: "V?PCMPGT[BWDQ]" |
| in: |
| - &int |
| go: $t |
| base: int |
| - *int |
| out: |
| - *anyvregToMask |
| # 256-bit VCMPGTQ's output elemBits is marked 32-bit in the XED data, we |
| # believe this is an error, so add this definition to overwrite. |
| - go: Greater |
| asm: "VPCMPGTQ" |
| in: |
| - &int64 |
| go: $t |
| base: int |
| elemBits: 64 |
| - *int64 |
| out: |
| - base: int |
| elemBits: 32 |
| overwriteElementBits: 64 |
| overwriteClass: mask |
| overwriteBase: int |
| - go: EqualMasked |
| asm: "V?PCMPEQ[BWDQ]" |
| in: |
| - class: mask |
| - *any |
| - *any |
| out: |
| - class: mask |
| - go: GreaterMasked |
| asm: "V?PCMPGT[BWDQ]" |
| in: |
| - class: mask |
| - *int |
| - *int |
| out: |
| - class: mask |
| # The const imm predicated compares after AVX512, please see categories.yaml |
| # for const imm specification. |
| - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual)Masked |
| asm: "VPCMP[BWDQ]" |
| in: |
| - class: mask |
| - *int |
| - *int |
| - class: immediate |
| const: 0 # Just a placeholder, will be overwritten by const imm porting. |
| out: |
| - class: mask |
| - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual)Masked |
| asm: "VPCMPU[BWDQ]" |
| in: |
| - class: mask |
| - &uint |
| go: $t |
| base: uint |
| - *uint |
| - class: immediate |
| const: 0 |
| out: |
| - class: mask |
| |
| # Floats |
| - go: Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual|IsNan |
| asm: "VCMPP[SD]" |
| in: |
| - &float |
| go: $t |
| base: float |
| - *float |
| - class: immediate |
| const: 0 |
| out: |
| - go: $t |
| overwriteBase: int |
| overwriteClass: mask |
| - go: (Equal|Greater|Less|LessEqual|GreaterEqual|NotEqual|IsNan)Masked |
| asm: "VCMPP[SD]" |
| in: |
| - class: mask |
| - *float |
| - *float |
| - class: immediate |
| const: 0 |
| out: |
| - class: mask |