Skip to content

Commit cee85fa

Browse files
committed
misc. cleanup
1 parent 6a6590e commit cee85fa

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:
@@ -1778,14 +1779,16 @@ let hasSideEffects = false, isAsCheapAsAMove = true in {
17781779
}
17791780

17801781
def IMOV1r : MOVr<Int1Regs, "pred">;
1781-
def IMOV1i : MOVi<Int1Regs, "pred", i1, i1imm, imm>;
17821782
def MOV16r : MOVr<Int16Regs, "b16">;
1783-
def IMOV16i : MOVi<Int16Regs, "b16", i16, i16imm, imm>;
17841783
def IMOV32r : MOVr<Int32Regs, "b32">;
1785-
def IMOV32i : MOVi<Int32Regs, "b32", i32, i32imm, imm>;
17861784
def IMOV64r : MOVr<Int64Regs, "b64">;
1787-
def IMOV64i : MOVi<Int64Regs, "b64", i64, i64imm, imm>;
17881785
def IMOV128r : MOVr<Int128Regs, "b128">;
1786+
1787+
1788+
def IMOV1i : MOVi<Int1Regs, "pred", i1, i1imm, imm>;
1789+
def IMOV16i : MOVi<Int16Regs, "b16", i16, i16imm, imm>;
1790+
def IMOV32i : MOVi<Int32Regs, "b32", i32, i32imm, imm>;
1791+
def IMOV64i : MOVi<Int64Regs, "b64", i64, i64imm, imm>;
17891792
def FMOV16i : MOVi<Int16Regs, "b16", f16, f16imm, fpimm>;
17901793
def BFMOV16i : MOVi<Int16Regs, "b16", bf16, bf16imm, fpimm>;
17911794
def FMOV32i : MOVi<Float32Regs, "b32", f32, f32imm, fpimm>;
@@ -2330,7 +2333,7 @@ def DeclareScalarRegInst :
23302333
".reg .b$size param$a;",
23312334
[(DeclareScalarParam (i32 imm:$a), (i32 imm:$size), (i32 1))]>;
23322335

2333-
class MoveParamSymbolInst<RegTypeInfo t> :
2336+
class MoveParamSymbolInst<RegTyInfo t> :
23342337
BasicNVPTXInst<(outs t.RC:$dst), (ins t.RC:$src),
23352338
"mov.b" # t.Size,
23362339
[(set t.Ty:$dst, (MoveParam texternalsym:$src))]>;
@@ -2349,21 +2352,18 @@ def PseudoUseParamI16 : PseudoUseParamInst<Int16Regs, i16>;
23492352
def PseudoUseParamF64 : PseudoUseParamInst<Float64Regs, f64>;
23502353
def PseudoUseParamF32 : PseudoUseParamInst<Float32Regs, f32>;
23512354

2352-
class ProxyRegInst<string SzStr, NVPTXRegClass regclass> :
2353-
BasicNVPTXInst<(outs regclass:$dst), (ins regclass:$src),
2355+
multiclass ProxyRegInst<string SzStr, NVPTXRegClass rc> {
2356+
def NAME : BasicNVPTXInst<(outs rc:$dst), (ins rc:$src),
23542357
"mov." # SzStr>;
2355-
2356-
def ProxyRegB1 : ProxyRegInst<"pred", Int1Regs>;
2357-
def ProxyRegB16 : ProxyRegInst<"b16", Int16Regs>;
2358-
def ProxyRegB32 : ProxyRegInst<"b32", Int32Regs>;
2359-
def ProxyRegB64 : ProxyRegInst<"b64", Int64Regs>;
2360-
2361-
foreach rc = [Int1Regs, Int16Regs, Int32Regs, Int64Regs] in {
2362-
defvar ProxyRegInst = cast<NVPTXInst>(ProxyRegB # rc.Size);
23632358
foreach vt = rc.RegTypes in
2364-
def: Pat<(vt (ProxyReg vt:$src)), (ProxyRegInst $src)>;
2359+
def : Pat<(vt (ProxyReg vt:$src)), (!cast<NVPTXInst>(NAME) $src)>;
23652360
}
23662361

2362+
defm ProxyRegB1 : ProxyRegInst<"pred", Int1Regs>;
2363+
defm ProxyRegB16 : ProxyRegInst<"b16", Int16Regs>;
2364+
defm ProxyRegB32 : ProxyRegInst<"b32", Int32Regs>;
2365+
defm ProxyRegB64 : ProxyRegInst<"b64", Int64Regs>;
2366+
23672367
//
23682368
// Load / Store Handling
23692369
//
@@ -2739,13 +2739,10 @@ foreach vt = [v2f16, v2bf16, v2i16] in {
27392739

27402740
def : Pat<(extractelt vt:$src, 0), (I32toI16L $src)>;
27412741
def : Pat<(extractelt vt:$src, 1), (I32toI16H $src)>;
2742+
2743+
def : Pat<(vt (build_vector vt.ElementType:$a, vt.ElementType:$b)),
2744+
(V2I16toI32 $a, $b)>;
27422745
}
2743-
def : Pat<(v2f16 (build_vector f16:$a, f16:$b)),
2744-
(V2I16toI32 $a, $b)>;
2745-
def : Pat<(v2bf16 (build_vector bf16:$a, bf16:$b)),
2746-
(V2I16toI32 $a, $b)>;
2747-
def : Pat<(v2i16 (build_vector i16:$a, i16:$b)),
2748-
(V2I16toI32 $a, $b)>;
27492746

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

0 commit comments

Comments
 (0)