@@ -133,9 +133,10 @@ def HaveZ180Ops : Predicate<"Subtarget->hasZ180Ops()">,
133
133
def HaveEZ80Ops : Predicate<"Subtarget->hasEZ80Ops()">,
134
134
AssemblerPredicate<(all_of FeatureEZ80), "eZ80 ops">;
135
135
def HaveIdxHalf : Predicate<"Subtarget->hasIndexHalfRegs()">,
136
- AssemblerPredicate<"FeatureIdxHalf", "index half regs">;
137
- def HaveSliOps : Predicate<"Subtarget->hasSliOps()">,
138
- AssemblerPredicate<"FeatureSli", "sli ops">;
136
+ AssemblerPredicate<(all_of FeatureIdxHalf),
137
+ "index half regs">;
138
+ def HaveSliOp : Predicate<"Subtarget->hasSliOp()">,
139
+ AssemblerPredicate<(all_of FeatureSli), "SLI op">;
139
140
140
141
//===----------------------------------------------------------------------===//
141
142
// Z80 Instruction Format Definitions.
@@ -807,8 +808,7 @@ defm RL : UnOp8RFF <CBPre, 2, "rl">;
807
808
defm RR : UnOp8RFF <CBPre, 3, "rr">;
808
809
defm SLA : UnOp8RF <CBPre, 4, "sla">;
809
810
defm SRA : UnOp8RF <CBPre, 5, "sra">;
810
- defm SLI : UnOp8RF <CBPre, 6, "sli">,
811
- Requires<[HaveSliOps]>;
811
+ defm SLI : UnOp8RF <CBPre, 6, "sli">, Requires<[HaveSliOp]>;
812
812
defm SRL : UnOp8RF <CBPre, 7, "srl">;
813
813
defm BIT : BitOp8F < 1, "bit">;
814
814
defm RES : BitOp8R < 2, "res">;
@@ -823,15 +823,17 @@ defm AND : BinOp8RF <NoPre, 4, "and">;
823
823
defm XOR : BinOp8RF <NoPre, 5, "xor">;
824
824
defm OR : BinOp8RF <NoPre, 6, "or", 1>;
825
825
defm CP : BinOp8F <NoPre, 7, "cp", 1>;
826
- defm TST : BinOp8F <EDPre, 4, "tst", 1>,
827
- Requires<[HaveZ180Ops]>;
826
+ defm TST : BinOp8F <EDPre, 4, "tst", 1>, Requires<[HaveZ180Ops]>;
828
827
829
- def : MnemonicAlias<"sll", "sli">, Requires<[HaveSliOps]>;
828
+ def : MnemonicAlias<"sll", "sli">, Requires<[HaveSliOp]>;
829
+ def : MnemonicAlias<"sl1", "sli">, Requires<[HaveSliOp]>;
830
830
831
831
def : Pat<(fshl G8:$reg, G8:$reg, (i8 1)), (RLC8r G8:$reg)>;
832
832
def : Pat<(fshl G8:$reg, G8:$reg, (i8 7)), (RRC8r G8:$reg)>;
833
833
def : Pat<(shl G8:$reg, (i8 1)), (SLA8r G8:$reg)>;
834
834
def : Pat<(sra G8:$reg, (i8 1)), (SRA8r G8:$reg)>;
835
+ def : Pat<(or (shl G8:$reg, (i8 1)), (i8 1)), (SLI8r G8:$reg)>,
836
+ Requires<[HaveSliOp]>;
835
837
def : Pat<(srl G8:$reg, (i8 1)), (SRL8r G8:$reg)>;
836
838
def : Pat<(add R8:$reg, (i8 1)), (INC8r R8:$reg)>;
837
839
def : Pat<(add R8:$reg, (i8 -1)), (DEC8r R8:$reg)>;
0 commit comments