From 75b1054024049956196d97303f2822c33a5e7438 Mon Sep 17 00:00:00 2001 From: Philip Reames Date: Mon, 26 Jun 2023 07:59:39 -0700 Subject: [PATCH] [RISCV] Combine VPseudoUnaryMask and VPseudoUnaryMaskTA [NFC] The only difference between these classes was the existance of a policy operand on the later. We can use the policy operand version for the one place which used the non-TA suffixed one. I then renamed to remove TA as these aren't tail agnostic; they take their policy from the operand. Note that this wouldn't be strictly NFC except that the one user of the class being removed wasn't in the masked psuedo table, and thus doesn't go through mask to unmasked conversion in ISEL. That's a missed optimization we may want to fix at some point. --- llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td | 34 ++++++++----------------- 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td index befc949..9b86ce5 100644 --- a/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td +++ b/llvm/lib/Target/RISCV/RISCVInstrInfoVPseudos.td @@ -1056,20 +1056,6 @@ class VPseudoUnaryNoMaskTU : Pseudo<(outs GetVRegNoV0.R:$rd), (ins GetVRegNoV0.R:$merge, OpClass:$rs2, - VMaskOp:$vm, AVL:$vl, ixlenimm:$sew), []>, - RISCVVPseudo { - let mayLoad = 0; - let mayStore = 0; - let hasSideEffects = 0; - let Constraints = Join<[Constraint, "$rd = $merge"], ",">.ret; - let HasVLOp = 1; - let HasSEWOp = 1; - let UsesMaskPolicy = 1; -} - -class VPseudoUnaryMaskTA : - Pseudo<(outs GetVRegNoV0.R:$rd), - (ins GetVRegNoV0.R:$merge, OpClass:$rs2, VMaskOp:$vm, AVL:$vl, ixlenimm:$sew, ixlenimm:$policy), []>, RISCVVPseudo { let mayLoad = 0; @@ -1973,7 +1959,7 @@ multiclass VPseudoVIOT_M { Sched<[WriteVMIotV_MX, ReadVMIotV_MX, ReadVMask]>; def "_" # m.MX # "_TU" : VPseudoUnaryNoMaskTU, Sched<[WriteVMIotV_MX, ReadVMIotV_MX, ReadVMask]>; - def "_" # m.MX # "_MASK" : VPseudoUnaryMaskTA, + def "_" # m.MX # "_MASK" : VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVMIotV_MX, ReadVMIotV_MX, ReadVMask]>; } @@ -2391,7 +2377,7 @@ multiclass VPseudoVCLS_V { Sched<[WriteVFClassV_MX, ReadVFClassV_MX, ReadVMask]>; def "_V_" # mx # "_TU": VPseudoUnaryNoMaskTU, Sched<[WriteVFClassV_MX, ReadVFClassV_MX, ReadVMask]>; - def "_V_" # mx # "_MASK" : VPseudoUnaryMaskTA, + def "_V_" # mx # "_MASK" : VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVFClassV_MX, ReadVFClassV_MX, ReadVMask]>; } @@ -2415,7 +2401,7 @@ multiclass VPseudoVSQR_V { def "_V" # suffix # "_TU": VPseudoUnaryNoMaskTU, Sched<[WriteVFSqrtV_MX_E, ReadVFSqrtV_MX_E, ReadVMask]>; - def "_V" # suffix # "_MASK" : VPseudoUnaryMaskTA, + def "_V" # suffix # "_MASK" : VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVFSqrtV_MX_E, ReadVFSqrtV_MX_E, ReadVMask]>; @@ -2434,7 +2420,7 @@ multiclass VPseudoVRCP_V { Sched<[WriteVFRecpV_MX, ReadVFRecpV_MX, ReadVMask]>; def "_V_" # mx # "_TU": VPseudoUnaryNoMaskTU, Sched<[WriteVFRecpV_MX, ReadVFRecpV_MX, ReadVMask]>; - def "_V_" # mx # "_MASK" : VPseudoUnaryMaskTA, + def "_V_" # mx # "_MASK" : VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVFRecpV_MX, ReadVFRecpV_MX, ReadVMask]>; } @@ -2455,7 +2441,7 @@ multiclass PseudoVEXT_VF2 { def "_" # mx # "_TU": VPseudoUnaryNoMaskTU, Sched<[WriteVExtV_MX, ReadVExtV_MX, ReadVMask]>; def "_" # mx # "_MASK" : - VPseudoUnaryMaskTA, + VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVExtV_MX, ReadVExtV_MX, ReadVMask]>; } @@ -2476,7 +2462,7 @@ multiclass PseudoVEXT_VF4 { def "_" # mx # "_TU": VPseudoUnaryNoMaskTU, Sched<[WriteVExtV_MX, ReadVExtV_MX, ReadVMask]>; def "_" # mx # "_MASK" : - VPseudoUnaryMaskTA, + VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVExtV_MX, ReadVExtV_MX, ReadVMask]>; } @@ -2497,7 +2483,7 @@ multiclass PseudoVEXT_VF8 { def "_" # mx # "_TU": VPseudoUnaryNoMaskTU, Sched<[WriteVExtV_MX, ReadVExtV_MX, ReadVMask]>; def "_" # mx # "_MASK" : - VPseudoUnaryMaskTA, + VPseudoUnaryMask, RISCVMaskedPseudo, Sched<[WriteVExtV_MX, ReadVExtV_MX, ReadVMask]>; } @@ -3571,8 +3557,8 @@ multiclass VPseudoConversion; def "_" # MInfo.MX # "_TU": VPseudoUnaryNoMaskTU; - def "_" # MInfo.MX # "_MASK" : VPseudoUnaryMaskTA, + def "_" # MInfo.MX # "_MASK" : VPseudoUnaryMask, RISCVMaskedPseudo; } } @@ -4049,7 +4035,7 @@ class VPatMaskUnaryMask(inst#"_M_"#mti.BX#"_MASK") (mti.Mask VR:$merge), (mti.Mask VR:$rs2), - (mti.Mask V0), GPR:$vl, mti.Log2SEW)>; + (mti.Mask V0), GPR:$vl, mti.Log2SEW, TU_MU)>; class VPatUnaryAnyMask