Skip to content

Commit 4ab78ef

Browse files
jacobly0adriweb
authored andcommitted
Fix #2.
1 parent 659ccf1 commit 4ab78ef

File tree

4 files changed

+15
-13
lines changed

4 files changed

+15
-13
lines changed

llvm/lib/Target/Z80/Z80.td

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ def FeatureEZ80 : SubtargetFeature<"ez80", "HasEZ80Ops", "true",
2828
"Support ez80 instructions">;
2929
def FeatureIdxHalf : SubtargetFeature<"idxhalf", "HasIdxHalfRegs", "true",
3030
"Support index half registers">;
31-
def FeatureSli : SubtargetFeature<"sli", "HasSliOps", "true",
31+
def FeatureSli : SubtargetFeature<"sli", "HasSliOp", "true",
3232
"Support SLI instruction">;
3333

3434
//===----------------------------------------------------------------------===//

llvm/lib/Target/Z80/Z80InstrInfo.td

+10-8
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,10 @@ def HaveZ180Ops : Predicate<"Subtarget->hasZ180Ops()">,
133133
def HaveEZ80Ops : Predicate<"Subtarget->hasEZ80Ops()">,
134134
AssemblerPredicate<(all_of FeatureEZ80), "eZ80 ops">;
135135
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">;
139140

140141
//===----------------------------------------------------------------------===//
141142
// Z80 Instruction Format Definitions.
@@ -807,8 +808,7 @@ defm RL : UnOp8RFF <CBPre, 2, "rl">;
807808
defm RR : UnOp8RFF <CBPre, 3, "rr">;
808809
defm SLA : UnOp8RF <CBPre, 4, "sla">;
809810
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]>;
812812
defm SRL : UnOp8RF <CBPre, 7, "srl">;
813813
defm BIT : BitOp8F < 1, "bit">;
814814
defm RES : BitOp8R < 2, "res">;
@@ -823,15 +823,17 @@ defm AND : BinOp8RF <NoPre, 4, "and">;
823823
defm XOR : BinOp8RF <NoPre, 5, "xor">;
824824
defm OR : BinOp8RF <NoPre, 6, "or", 1>;
825825
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]>;
828827

829-
def : MnemonicAlias<"sll", "sli">, Requires<[HaveSliOps]>;
828+
def : MnemonicAlias<"sll", "sli">, Requires<[HaveSliOp]>;
829+
def : MnemonicAlias<"sl1", "sli">, Requires<[HaveSliOp]>;
830830

831831
def : Pat<(fshl G8:$reg, G8:$reg, (i8 1)), (RLC8r G8:$reg)>;
832832
def : Pat<(fshl G8:$reg, G8:$reg, (i8 7)), (RRC8r G8:$reg)>;
833833
def : Pat<(shl G8:$reg, (i8 1)), (SLA8r G8:$reg)>;
834834
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]>;
835837
def : Pat<(srl G8:$reg, (i8 1)), (SRL8r G8:$reg)>;
836838
def : Pat<(add R8:$reg, (i8 1)), (INC8r R8:$reg)>;
837839
def : Pat<(add R8:$reg, (i8 -1)), (DEC8r R8:$reg)>;

llvm/lib/Target/Z80/Z80Subtarget.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Z80Subtarget &Z80Subtarget::initializeSubtargetDependencies(StringRef CPU,
3535
CPU = TargetTriple.getArchName();
3636
ParseSubtargetFeatures(CPU, TuneCPU, FS);
3737
HasIdxHalfRegs = HasUndocOps || HasEZ80Ops;
38-
HasSliOps = HasUndocOps;
38+
HasSliOp = HasUndocOps;
3939
return *this;
4040
}
4141

llvm/lib/Target/Z80/Z80Subtarget.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ class Z80Subtarget final : public Z80GenSubtargetInfo {
5252
/// True if target has index half registers (HasUndocOps || HasEZ80Ops).
5353
bool HasIdxHalfRegs = false;
5454

55-
/// True if target has SLI (also known SLL) instructions (HasUndocOps)
56-
bool HasSliOps = false;
55+
/// True if target has SLI (also known SLL and SL1) instruction (HasUndocOps)
56+
bool HasSliOp = false;
5757

5858
// Ordering here is important. Z80InstrInfo initializes Z80RegisterInfo which
5959
// Z80TargetLowering needs.
@@ -121,7 +121,7 @@ class Z80Subtarget final : public Z80GenSubtargetInfo {
121121
bool hasZ180Ops() const { return HasZ180Ops; }
122122
bool hasEZ80Ops() const { return HasEZ80Ops; }
123123
bool hasIndexHalfRegs() const { return HasIdxHalfRegs; }
124-
bool hasSliOps() const { return HasSliOps; }
124+
bool hasSliOp() const { return HasSliOp; }
125125
bool has24BitEZ80Ops() const { return is24Bit() && hasEZ80Ops(); }
126126
bool has16BitEZ80Ops() const { return is16Bit() && hasEZ80Ops(); }
127127
};

0 commit comments

Comments
 (0)