Skip to content

Commit 9676a71

Browse files
author
Tony Varghese
committed
[NFC][PowerPC] Rebase the anonymous xxeval patterns to use the new XXEvalPattern class
1 parent 2c00df3 commit 9676a71

File tree

1 file changed

+36
-39
lines changed

1 file changed

+36
-39
lines changed

llvm/lib/Target/PowerPC/PPCInstrP10.td

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -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
// =============================================================================
22472244
multiclass 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

Comments
 (0)