@@ -2175,10 +2175,7 @@ let AddedComplexity = 400, Predicates = [IsISA3_1, HasVSX] in {
21752175// - Other vector types [v16i8, v8i16] require COPY_TO_REGCLASS to/from VRRC
21762176// =============================================================================
21772177
2178- class XXEvalPattern<dag pattern, bits<8> imm>
2179- : Pat<(v4i32 pattern), (XXEVAL $vA, $vB, $vC, imm)> {}
2180-
2181- class XXEvalPatterns<ValueType Vt, dag InputPattern, bits<8> Imm>
2178+ class XXEvalPattern<ValueType Vt, dag InputPattern, bits<8> Imm>
21822179 : Pat<(Vt InputPattern),
21832180 !if(!or(!eq(Vt, v4i32), !eq(Vt, v2i64)),
21842181 // VSRC path: direct XXEVAL for v4i32 and v2i64
@@ -2246,26 +2243,26 @@ def VEqv
22462243// =============================================================================
22472244multiclass XXEvalTernarySelectAnd<ValueType Vt> {
22482245 // Pattern: A ? XOR(B,C) : AND(B,C) XXEVAL immediate value: 22
2249- def : XXEvalPatterns <
2246+ def : XXEvalPattern <
22502247 Vt, (vselect Vt:$vA, (VXor Vt:$vB, Vt:$vC), (VAnd Vt:$vB, Vt:$vC)),
22512248 22>;
22522249
22532250 // Pattern: A ? NOR(B,C) : AND(B,C) XXEVAL immediate value: 24
2254- def : XXEvalPatterns <
2251+ def : XXEvalPattern <
22552252 Vt, (vselect Vt:$vA, (VNor Vt:$vB, Vt:$vC), (VAnd Vt:$vB, Vt:$vC)),
22562253 24>;
22572254
22582255 // Pattern: A ? EQV(B,C) : AND(B,C) XXEVAL immediate value: 25
2259- def : XXEvalPatterns <
2256+ def : XXEvalPattern <
22602257 Vt, (vselect Vt:$vA, (VEqv Vt:$vB, Vt:$vC), (VAnd Vt:$vB, Vt:$vC)),
22612258 25>;
22622259
22632260 // Pattern: A ? NOT(C) : AND(B,C) XXEVAL immediate value: 26
2264- def : XXEvalPatterns <
2261+ def : XXEvalPattern <
22652262 Vt, (vselect Vt:$vA, (VNot Vt:$vC), (VAnd Vt:$vB, Vt:$vC)), 26>;
22662263
22672264 // Pattern: A ? NOT(B) : AND(B,C) XXEVAL immediate value: 28
2268- def : XXEvalPatterns <
2265+ def : XXEvalPattern <
22692266 Vt, (vselect Vt:$vA, (VNot Vt:$vB), (VAnd Vt:$vB, Vt:$vC)), 28>;
22702267}
22712268
@@ -2299,83 +2296,83 @@ let Predicates = [PrefixInstrs, HasP10Vector] in {
22992296 // Anonymous patterns for XXEVAL
23002297 // AND
23012298 // and(A, B, C)
2302- def : XXEvalPattern<(and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 1>;
2299+ def : XXEvalPattern<v4i32, (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 1>;
23032300 // and(A, xor(B, C))
2304- def : XXEvalPattern<(and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 6>;
2301+ def : XXEvalPattern<v4i32, (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 6>;
23052302 // and(A, or(B, C))
2306- def : XXEvalPattern<(and v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 7>;
2303+ def : XXEvalPattern<v4i32, (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 7>;
23072304 // and(A, nor(B, C))
2308- def : XXEvalPattern<(and v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 8>;
2305+ def : XXEvalPattern<v4i32, (and v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 8>;
23092306 // and(A, eqv(B, C))
2310- def : XXEvalPattern<(and v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 9>;
2307+ def : XXEvalPattern<v4i32, (and v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 9>;
23112308 // and(A, nand(B, C))
2312- def : XXEvalPattern<(and v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 14>;
2309+ def : XXEvalPattern<v4i32, (and v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 14>;
23132310
23142311 // NAND
23152312 // nand(A, B, C)
2316- def : XXEvalPattern<(vnot (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC))),
2313+ def : XXEvalPattern<v4i32, (vnot (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC))),
23172314 !sub(255, 1)>;
23182315 // nand(A, xor(B, C))
2319- def : XXEvalPattern<(vnot (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))),
2316+ def : XXEvalPattern<v4i32, (vnot (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))),
23202317 !sub(255, 6)>;
23212318 // nand(A, or(B, C))
2322- def : XXEvalPattern<(vnot (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC))),
2319+ def : XXEvalPattern<v4i32, (vnot (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC))),
23232320 !sub(255, 7)>;
23242321 // nand(A, nor(B, C))
2325- def : XXEvalPattern<(or (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)),
2322+ def : XXEvalPattern<v4i32, (or (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)),
23262323 !sub(255, 8)>;
23272324 // nand(A, eqv(B, C))
2328- def : XXEvalPattern<(or (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)),
2325+ def : XXEvalPattern<v4i32, (or (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)),
23292326 !sub(255, 9)>;
23302327 // nand(A, nand(B, C))
2331- def : XXEvalPattern<(or (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)),
2328+ def : XXEvalPattern<v4i32, (or (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)),
23322329 !sub(255, 14)>;
23332330
23342331 // EQV
23352332 // (eqv A, B, C)
2336- def : XXEvalPattern<(or (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)),
2333+ def : XXEvalPattern<v4i32, (or (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)),
23372334 (vnot (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC)))),
23382335 150>;
23392336 // (eqv A, (and B, C))
2340- def : XXEvalPattern<(vnot (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 225>;
2337+ def : XXEvalPattern<v4i32, (vnot (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 225>;
23412338 // (eqv A, (or B, C))
2342- def : XXEvalPattern<(vnot (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 135>;
2339+ def : XXEvalPattern<v4i32, (vnot (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 135>;
23432340
23442341 // NOR
23452342 // (nor A, B, C)
2346- def : XXEvalPattern<(vnot (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 128>;
2343+ def : XXEvalPattern<v4i32, (vnot (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 128>;
23472344 // (nor A, (and B, C))
2348- def : XXEvalPattern<(vnot (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 224>;
2345+ def : XXEvalPattern<v4i32, (vnot (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 224>;
23492346 // (nor A, (eqv B, C))
2350- def : XXEvalPattern<(and (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)), 96>;
2347+ def : XXEvalPattern<v4i32, (and (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)), 96>;
23512348 // (nor A, (nand B, C))
2352- def : XXEvalPattern<(and (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)), 16>;
2349+ def : XXEvalPattern<v4i32, (and (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)), 16>;
23532350 // (nor A, (nor B, C))
2354- def : XXEvalPattern<(and (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)), 112>;
2351+ def : XXEvalPattern<v4i32, (and (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)), 112>;
23552352 // (nor A, (xor B, C))
2356- def : XXEvalPattern<(vnot (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))), 144>;
2353+ def : XXEvalPattern<v4i32, (vnot (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))), 144>;
23572354
23582355 // OR
23592356 // (or A, B, C)
2360- def : XXEvalPattern<(or v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 127>;
2357+ def : XXEvalPattern<v4i32, (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 127>;
23612358 // (or A, (and B, C))
2362- def : XXEvalPattern<(or v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 31>;
2359+ def : XXEvalPattern<v4i32, (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 31>;
23632360 // (or A, (eqv B, C))
2364- def : XXEvalPattern<(or v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 159>;
2361+ def : XXEvalPattern<v4i32, (or v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 159>;
23652362 // (or A, (nand B, C))
2366- def : XXEvalPattern<(or v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 239>;
2363+ def : XXEvalPattern<v4i32, (or v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 239>;
23672364 // (or A, (nor B, C))
2368- def : XXEvalPattern<(or v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 143>;
2365+ def : XXEvalPattern<v4i32, (or v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 143>;
23692366 // (or A, (xor B, C))
2370- def : XXEvalPattern<(or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 111>;
2367+ def : XXEvalPattern<v4i32, (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 111>;
23712368
23722369 // XOR
23732370 // (xor A, B, C)
2374- def : XXEvalPattern<(xor v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 105>;
2371+ def : XXEvalPattern<v4i32, (xor v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 105>;
23752372 // (xor A, (and B, C))
2376- def : XXEvalPattern<(xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 30>;
2373+ def : XXEvalPattern<v4i32, (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 30>;
23772374 // (xor A, (or B, C))
2378- def : XXEvalPattern<(xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 120>;
2375+ def : XXEvalPattern<v4i32, (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 120>;
23792376
23802377 // XXEval Patterns for ternary Operations.
23812378 foreach Ty = [v4i32, v2i64, v8i16, v16i8] in {
0 commit comments