Skip to content

Commit e96fee7

Browse files
committed
misc. cleanup
1 parent ec8de6f commit e96fee7

File tree

4 files changed

+254
-449
lines changed

4 files changed

+254
-449
lines changed

llvm/lib/Target/NVPTX/NVPTXInstrInfo.td

Lines changed: 22 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -208,6 +208,9 @@ class ValueToRegClass<ValueType T> {
208208

209209
class OneUse1<SDPatternOperator operator>
210210
: PatFrag<(ops node:$A), (operator node:$A), [{ return N->hasOneUse(); }]>;
211+
class OneUse2<SDPatternOperator operator>
212+
: PatFrag<(ops node:$A, node:$B), (operator node:$A, node:$B), [{ return N->hasOneUse(); }]>;
213+
211214

212215
class fpimm_pos_inf<ValueType vt>
213216
: FPImmLeaf<vt, [{ return Imm.isPosInfinity(); }]>;
@@ -1071,9 +1074,7 @@ def : Pat<(mul (zext i16:$a), (i32 UInt16Const:$b)),
10711074
//
10721075
// Integer multiply-add
10731076
//
1074-
def mul_oneuse : PatFrag<(ops node:$a, node:$b), (mul node:$a, node:$b), [{
1075-
return N->hasOneUse();
1076-
}]>;
1077+
def mul_oneuse : OneUse2<mul>;
10771078

10781079
multiclass MAD<string Ptx, ValueType VT, NVPTXRegClass Reg, Operand Imm> {
10791080
def rrr:
@@ -1784,14 +1785,16 @@ let hasSideEffects = false, isAsCheapAsAMove = true in {
17841785
}
17851786

17861787
def IMOV1r : MOVr<Int1Regs, "pred">;
1787-
def IMOV1i : MOVi<Int1Regs, "pred", i1, i1imm, imm>;
17881788
def MOV16r : MOVr<Int16Regs, "b16">;
1789-
def IMOV16i : MOVi<Int16Regs, "b16", i16, i16imm, imm>;
17901789
def IMOV32r : MOVr<Int32Regs, "b32">;
1791-
def IMOV32i : MOVi<Int32Regs, "b32", i32, i32imm, imm>;
17921790
def IMOV64r : MOVr<Int64Regs, "b64">;
1793-
def IMOV64i : MOVi<Int64Regs, "b64", i64, i64imm, imm>;
17941791
def IMOV128r : MOVr<Int128Regs, "b128">;
1792+
1793+
1794+
def IMOV1i : MOVi<Int1Regs, "pred", i1, i1imm, imm>;
1795+
def IMOV16i : MOVi<Int16Regs, "b16", i16, i16imm, imm>;
1796+
def IMOV32i : MOVi<Int32Regs, "b32", i32, i32imm, imm>;
1797+
def IMOV64i : MOVi<Int64Regs, "b64", i64, i64imm, imm>;
17951798
def FMOV16i : MOVi<Int16Regs, "b16", f16, f16imm, fpimm>;
17961799
def BFMOV16i : MOVi<Int16Regs, "b16", bf16, bf16imm, fpimm>;
17971800
def FMOV32i : MOVi<Float32Regs, "b32", f32, f32imm, fpimm>;
@@ -2336,7 +2339,7 @@ def DeclareScalarRegInst :
23362339
".reg .b$size param$a;",
23372340
[(DeclareScalarParam (i32 imm:$a), (i32 imm:$size), (i32 1))]>;
23382341

2339-
class MoveParamSymbolInst<RegTypeInfo t> :
2342+
class MoveParamSymbolInst<RegTyInfo t> :
23402343
BasicNVPTXInst<(outs t.RC:$dst), (ins t.RC:$src),
23412344
"mov.b" # t.Size,
23422345
[(set t.Ty:$dst, (MoveParam texternalsym:$src))]>;
@@ -2355,21 +2358,18 @@ def PseudoUseParamI16 : PseudoUseParamInst<Int16Regs, i16>;
23552358
def PseudoUseParamF64 : PseudoUseParamInst<Float64Regs, f64>;
23562359
def PseudoUseParamF32 : PseudoUseParamInst<Float32Regs, f32>;
23572360

2358-
class ProxyRegInst<string SzStr, NVPTXRegClass regclass> :
2359-
BasicNVPTXInst<(outs regclass:$dst), (ins regclass:$src),
2361+
multiclass ProxyRegInst<string SzStr, NVPTXRegClass rc> {
2362+
def NAME : BasicNVPTXInst<(outs rc:$dst), (ins rc:$src),
23602363
"mov." # SzStr>;
2361-
2362-
def ProxyRegB1 : ProxyRegInst<"pred", Int1Regs>;
2363-
def ProxyRegB16 : ProxyRegInst<"b16", Int16Regs>;
2364-
def ProxyRegB32 : ProxyRegInst<"b32", Int32Regs>;
2365-
def ProxyRegB64 : ProxyRegInst<"b64", Int64Regs>;
2366-
2367-
foreach rc = [Int1Regs, Int16Regs, Int32Regs, Int64Regs] in {
2368-
defvar ProxyRegInst = cast<NVPTXInst>(ProxyRegB # rc.Size);
23692364
foreach vt = rc.RegTypes in
2370-
def: Pat<(vt (ProxyReg vt:$src)), (ProxyRegInst $src)>;
2365+
def : Pat<(vt (ProxyReg vt:$src)), (!cast<NVPTXInst>(NAME) $src)>;
23712366
}
23722367

2368+
defm ProxyRegB1 : ProxyRegInst<"pred", Int1Regs>;
2369+
defm ProxyRegB16 : ProxyRegInst<"b16", Int16Regs>;
2370+
defm ProxyRegB32 : ProxyRegInst<"b32", Int32Regs>;
2371+
defm ProxyRegB64 : ProxyRegInst<"b64", Int64Regs>;
2372+
23732373
//
23742374
// Load / Store Handling
23752375
//
@@ -2745,13 +2745,10 @@ foreach vt = [v2f16, v2bf16, v2i16] in {
27452745

27462746
def : Pat<(extractelt vt:$src, 0), (I32toI16L $src)>;
27472747
def : Pat<(extractelt vt:$src, 1), (I32toI16H $src)>;
2748+
2749+
def : Pat<(vt (build_vector vt.ElementType:$a, vt.ElementType:$b)),
2750+
(V2I16toI32 $a, $b)>;
27482751
}
2749-
def : Pat<(v2f16 (build_vector f16:$a, f16:$b)),
2750-
(V2I16toI32 $a, $b)>;
2751-
def : Pat<(v2bf16 (build_vector bf16:$a, bf16:$b)),
2752-
(V2I16toI32 $a, $b)>;
2753-
def : Pat<(v2i16 (build_vector i16:$a, i16:$b)),
2754-
(V2I16toI32 $a, $b)>;
27552752

27562753
def: Pat<(v2i16 (scalar_to_vector i16:$a)),
27572754
(CVT_u32_u16 $a, CvtNONE)>;

0 commit comments

Comments
 (0)