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