Skip to content

Commit d0d1374

Browse files
author
Tony Varghese
committed
Introduced XXEvalUnaryPattern class. Removed DagUnaryVNot
1 parent a9515a5 commit d0d1374

File tree

1 file changed

+50
-50
lines changed

1 file changed

+50
-50
lines changed

llvm/lib/Target/PowerPC/PPCInstrP10.td

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2159,7 +2159,7 @@ let AddedComplexity = 400, Predicates = [IsISA3_1, HasVSX] in {
21592159
(COPY_TO_REGCLASS $VRB, VSRC), 2)))>;
21602160
}
21612161

2162-
class XXEvalPattern <ValueType vt, dag pattern, bits<8> imm> :
2162+
class xxevalPattern <ValueType vt, dag pattern, bits<8> imm> :
21632163
Pat<(vt pattern), (XXEVAL $vA, $vB, $vC, imm)> {}
21642164

21652165
class DagCondVNot<dag d, bit negate> {
@@ -2196,91 +2196,91 @@ class XXEvalBinaryPattern<ValueType vt, SDPatternOperator op, bit notResult = 0>
21962196
multiclass XXEvalVSelectWithXAnd<ValueType vt, bits<8> baseImm> {
21972197
// Multiclass for Ternary(A, X, and(B, C)) style patterns.
21982198
// Ternary(A, xor(B,C), and(B,C)) => imm: baseImm
2199-
def : XXEvalPattern<vt,
2199+
def : xxevalPattern<vt,
22002200
(vselect vt:$vA, XXEvalBinaryPattern<vt, xor>.opPat, XXEvalBinaryPattern<vt, and>.opPat),
22012201
baseImm>;
22022202
// Ternary(A, nor(B,C), and(B,C)) => imm: baseImm + 2
2203-
def : XXEvalPattern<vt,
2203+
def : xxevalPattern<vt,
22042204
(vselect vt:$vA, XXEvalBinaryPattern<vt, or, 1>.opPat, XXEvalBinaryPattern<vt, and>.opPat),
22052205
!add(baseImm, 2)>;
22062206
// Ternary(A, eqv(B,C), and(B,C)) => imm: baseImm + 3
2207-
def : XXEvalPattern<vt,
2207+
def : xxevalPattern<vt,
22082208
(vselect vt:$vA, XXEvalBinaryPattern<vt, xor, 1>.opPat, XXEvalBinaryPattern<vt, and>.opPat),
22092209
!add(baseImm, 3)>;
22102210
// Ternary(A, not(C), and(B,C)) => imm: baseImm + 4
2211-
def : XXEvalPattern<vt,
2211+
def : xxevalPattern<vt,
22122212
(vselect vt:$vA, XXEvalUnaryPattern<vt>.vnotC, XXEvalBinaryPattern<vt, and>.opPat),
22132213
!add(baseImm, 4)>;
22142214
// Ternary(A, not(B), and(B,C)) => imm: baseImm + 6
2215-
def : XXEvalPattern<vt,
2215+
def : xxevalPattern<vt,
22162216
(vselect vt:$vA, XXEvalUnaryPattern<vt>.vnotB, XXEvalBinaryPattern<vt, and>.opPat),
22172217
!add(baseImm, 6)>;
22182218
}
22192219

22202220
multiclass XXEvalVSelectWithXB<ValueType vt, bits<8> baseImm>{
22212221
// Multiclass for Ternary(A, X, B) style patterns
22222222
// Ternary(A, and(B,C), B) => imm: baseImm
2223-
def : XXEvalPattern<vt,
2223+
def : xxevalPattern<vt,
22242224
(vselect vt:$vA, XXEvalBinaryPattern<vt, and>.opPat, vt:$vB),
22252225
baseImm>;
22262226
// Ternary(A, nor(B,C), B) => imm: baseImm + 7
2227-
def : XXEvalPattern<vt,
2227+
def : xxevalPattern<vt,
22282228
(vselect vt:$vA, XXEvalBinaryPattern<vt, or, 1>.opPat, vt:$vB),
22292229
!add(baseImm, 7)>;
22302230
// Ternary(A, eqv(B,C), B) => imm: baseImm + 8
2231-
def : XXEvalPattern<vt,
2231+
def : xxevalPattern<vt,
22322232
(vselect vt:$vA, XXEvalBinaryPattern<vt, xor, 1>.opPat, vt:$vB),
22332233
!add(baseImm, 8)>;
22342234
// Ternary(A, not(C), B) => imm: baseImm + 9
2235-
def : XXEvalPattern<vt,
2235+
def : xxevalPattern<vt,
22362236
(vselect vt:$vA, XXEvalUnaryPattern<vt>.vnotC, vt:$vB),
22372237
!add(baseImm, 9)>;
22382238
// Ternary(A, nand(B,C), B) => imm: baseImm + 13
2239-
def : XXEvalPattern<vt,
2239+
def : xxevalPattern<vt,
22402240
(vselect vt:$vA, XXEvalBinaryPattern<vt, and, 1>.opPat, vt:$vB),
22412241
!add(baseImm, 13)>;
22422242
}
22432243

22442244
multiclass XXEvalVSelectWithXC<ValueType vt, bits<8> baseImm>{
22452245
// Multiclass for Ternary(A, X, C) style patterns
22462246
// Ternary(A, and(B,C), C) => imm: baseImm
2247-
def : XXEvalPattern<vt,
2247+
def : xxevalPattern<vt,
22482248
(vselect vt:$vA, XXEvalBinaryPattern<vt, and>.opPat, vt:$vC),
22492249
baseImm>;
22502250
// Ternary(A, nor(B,C), C) => imm: baseImm + 7
2251-
def : XXEvalPattern<vt,
2251+
def : xxevalPattern<vt,
22522252
(vselect vt:$vA, XXEvalBinaryPattern<vt, or, 1>.opPat, vt:$vC),
22532253
!add(baseImm, 7)>;
22542254
// Ternary(A, eqv(B,C), C) => imm: baseImm + 8
2255-
def : XXEvalPattern<vt,
2255+
def : xxevalPattern<vt,
22562256
(vselect vt:$vA, XXEvalBinaryPattern<vt, xor, 1>.opPat, vt:$vC),
22572257
!add(baseImm, 8)>;
22582258
// Ternary(A, nand(B,C), C) => imm: baseImm + 13
2259-
def : XXEvalPattern<vt,
2259+
def : xxevalPattern<vt,
22602260
(vselect vt:$vA, XXEvalBinaryPattern<vt, and, 1>.opPat, vt:$vC),
22612261
!add(baseImm, 13)>;
22622262
}
22632263

22642264
multiclass XXEvalVSelectWithXXor<ValueType vt, bits<8> baseImm>{
22652265
// Multiclass for Ternary(A, X, xor(B,C)) style patterns
22662266
// Ternary(A, and(B,C), xor(B,C)) => imm: baseImm
2267-
def : XXEvalPattern<vt,
2267+
def : xxevalPattern<vt,
22682268
(vselect vt:$vA, XXEvalBinaryPattern<vt, and>.opPat, XXEvalBinaryPattern<vt, xor>.opPat),
22692269
baseImm>;
22702270
// Ternary(A, B, xor(B,C)) => imm: baseImm + 2
2271-
def : XXEvalPattern<vt,
2271+
def : xxevalPattern<vt,
22722272
(vselect vt:$vA, vt:$vB, XXEvalBinaryPattern<vt, xor>.opPat),
22732273
!add(baseImm, 2)>;
22742274
// Ternary(A, C, xor(B,C)) => imm: baseImm + 4
2275-
def : XXEvalPattern<vt,
2275+
def : xxevalPattern<vt,
22762276
(vselect vt:$vA, vt:$vC, XXEvalBinaryPattern<vt, xor>.opPat),
22772277
!add(baseImm, 4)>;
22782278
// Ternary(A, or(B,C), xor(B,C)) => imm: baseImm + 6
2279-
def : XXEvalPattern<vt,
2279+
def : xxevalPattern<vt,
22802280
(vselect vt:$vA, XXEvalBinaryPattern<vt, or>.opPat, XXEvalBinaryPattern<vt, xor>.opPat),
22812281
!add(baseImm, 6)>;
22822282
// Ternary(A, nor(B,C), xor(B,C)) => imm: baseImm + 7
2283-
def : XXEvalPattern<vt,
2283+
def : xxevalPattern<vt,
22842284
(vselect vt:$vA, XXEvalBinaryPattern<vt, or, 1>.opPat, XXEvalBinaryPattern<vt, xor>.opPat),
22852285
!add(baseImm, 7)>;
22862286
}
@@ -2315,83 +2315,83 @@ let Predicates = [PrefixInstrs, HasP10Vector] in {
23152315
// Anonymous patterns for XXEVAL
23162316
// AND
23172317
// and(A, B, C)
2318-
def : XXEvalPattern<v4i32, (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 1>;
2318+
def : xxevalPattern<v4i32, (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 1>;
23192319
// and(A, xor(B, C))
2320-
def : XXEvalPattern<v4i32, (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 6>;
2320+
def : xxevalPattern<v4i32, (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 6>;
23212321
// and(A, or(B, C))
2322-
def : XXEvalPattern<v4i32, (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 7>;
2322+
def : xxevalPattern<v4i32, (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 7>;
23232323
// and(A, nor(B, C))
2324-
def : XXEvalPattern<v4i32, (and v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 8>;
2324+
def : xxevalPattern<v4i32, (and v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 8>;
23252325
// and(A, eqv(B, C))
2326-
def : XXEvalPattern<v4i32, (and v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 9>;
2326+
def : xxevalPattern<v4i32, (and v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 9>;
23272327
// and(A, nand(B, C))
2328-
def : XXEvalPattern<v4i32, (and v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 14>;
2328+
def : xxevalPattern<v4i32, (and v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 14>;
23292329

23302330
// NAND
23312331
// nand(A, B, C)
2332-
def : XXEvalPattern<v4i32, (vnot (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC))),
2332+
def : xxevalPattern<v4i32, (vnot (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC))),
23332333
!sub(255, 1)>;
23342334
// nand(A, xor(B, C))
2335-
def : XXEvalPattern<v4i32, (vnot (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))),
2335+
def : xxevalPattern<v4i32, (vnot (and v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))),
23362336
!sub(255, 6)>;
23372337
// nand(A, or(B, C))
2338-
def : XXEvalPattern<v4i32, (vnot (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC))),
2338+
def : xxevalPattern<v4i32, (vnot (and v4i32:$vA, (or v4i32:$vB, v4i32:$vC))),
23392339
!sub(255, 7)>;
23402340
// nand(A, nor(B, C))
2341-
def : XXEvalPattern<v4i32, (or (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)),
2341+
def : xxevalPattern<v4i32, (or (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)),
23422342
!sub(255, 8)>;
23432343
// nand(A, eqv(B, C))
2344-
def : XXEvalPattern<v4i32, (or (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)),
2344+
def : xxevalPattern<v4i32, (or (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)),
23452345
!sub(255, 9)>;
23462346
// nand(A, nand(B, C))
2347-
def : XXEvalPattern<v4i32, (or (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)),
2347+
def : xxevalPattern<v4i32, (or (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)),
23482348
!sub(255, 14)>;
23492349

23502350
// EQV
23512351
// (eqv A, B, C)
2352-
def : XXEvalPattern<v4i32, (or (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)),
2352+
def : xxevalPattern<v4i32, (or (and v4i32:$vA, (and v4i32:$vB, v4i32:$vC)),
23532353
(vnot (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC)))),
23542354
150>;
23552355
// (eqv A, (and B, C))
2356-
def : XXEvalPattern<v4i32, (vnot (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 225>;
2356+
def : xxevalPattern<v4i32, (vnot (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 225>;
23572357
// (eqv A, (or B, C))
2358-
def : XXEvalPattern<v4i32, (vnot (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 135>;
2358+
def : xxevalPattern<v4i32, (vnot (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 135>;
23592359

23602360
// NOR
23612361
// (nor A, B, C)
2362-
def : XXEvalPattern<v4i32, (vnot (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 128>;
2362+
def : xxevalPattern<v4i32, (vnot (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC))), 128>;
23632363
// (nor A, (and B, C))
2364-
def : XXEvalPattern<v4i32, (vnot (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 224>;
2364+
def : xxevalPattern<v4i32, (vnot (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC))), 224>;
23652365
// (nor A, (eqv B, C))
2366-
def : XXEvalPattern<v4i32, (and (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)), 96>;
2366+
def : xxevalPattern<v4i32, (and (vnot v4i32:$vA), (xor v4i32:$vB, v4i32:$vC)), 96>;
23672367
// (nor A, (nand B, C))
2368-
def : XXEvalPattern<v4i32, (and (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)), 16>;
2368+
def : xxevalPattern<v4i32, (and (vnot v4i32:$vA), (and v4i32:$vB, v4i32:$vC)), 16>;
23692369
// (nor A, (nor B, C))
2370-
def : XXEvalPattern<v4i32, (and (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)), 112>;
2370+
def : xxevalPattern<v4i32, (and (vnot v4i32:$vA), (or v4i32:$vB, v4i32:$vC)), 112>;
23712371
// (nor A, (xor B, C))
2372-
def : XXEvalPattern<v4i32, (vnot (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))), 144>;
2372+
def : xxevalPattern<v4i32, (vnot (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC))), 144>;
23732373

23742374
// OR
23752375
// (or A, B, C)
2376-
def : XXEvalPattern<v4i32, (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 127>;
2376+
def : xxevalPattern<v4i32, (or v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 127>;
23772377
// (or A, (and B, C))
2378-
def : XXEvalPattern<v4i32, (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 31>;
2378+
def : xxevalPattern<v4i32, (or v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 31>;
23792379
// (or A, (eqv B, C))
2380-
def : XXEvalPattern<v4i32, (or v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 159>;
2380+
def : xxevalPattern<v4i32, (or v4i32:$vA, (vnot (xor v4i32:$vB, v4i32:$vC))), 159>;
23812381
// (or A, (nand B, C))
2382-
def : XXEvalPattern<v4i32, (or v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 239>;
2382+
def : xxevalPattern<v4i32, (or v4i32:$vA, (vnot (and v4i32:$vB, v4i32:$vC))), 239>;
23832383
// (or A, (nor B, C))
2384-
def : XXEvalPattern<v4i32, (or v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 143>;
2384+
def : xxevalPattern<v4i32, (or v4i32:$vA, (vnot (or v4i32:$vB, v4i32:$vC))), 143>;
23852385
// (or A, (xor B, C))
2386-
def : XXEvalPattern<v4i32, (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 111>;
2386+
def : xxevalPattern<v4i32, (or v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 111>;
23872387

23882388
// XOR
23892389
// (xor A, B, C)
2390-
def : XXEvalPattern<v4i32, (xor v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 105>;
2390+
def : xxevalPattern<v4i32, (xor v4i32:$vA, (xor v4i32:$vB, v4i32:$vC)), 105>;
23912391
// (xor A, (and B, C))
2392-
def : XXEvalPattern<v4i32, (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 30>;
2392+
def : xxevalPattern<v4i32, (xor v4i32:$vA, (and v4i32:$vB, v4i32:$vC)), 30>;
23932393
// (xor A, (or B, C))
2394-
def : XXEvalPattern<v4i32, (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 120>;
2394+
def : xxevalPattern<v4i32, (xor v4i32:$vA, (or v4i32:$vB, v4i32:$vC)), 120>;
23952395

23962396
// Utilize xxeval instruction for ternary vector expressions.
23972397
defm : XXEvalVSelectWithXAnd<v4i32, 22>;

0 commit comments

Comments
 (0)