forked from OSchip/llvm-project
Add clo instruction. Patch by Akira Hatanaka (ahatanaka@mips.com) with some minor tweaks
llvm-svn: 118667
This commit is contained in:
parent
b1620224e6
commit
67fc18a493
|
@ -59,7 +59,8 @@ def FeatureMips1 : SubtargetFeature<"mips1", "MipsArchVersion", "Mips1",
|
|||
def FeatureMips2 : SubtargetFeature<"mips2", "MipsArchVersion", "Mips2",
|
||||
"Mips2 ISA Support">;
|
||||
def FeatureMips32 : SubtargetFeature<"mips32", "MipsArchVersion", "Mips32",
|
||||
"Mips32 ISA Support", [FeatureCondMov]>;
|
||||
"Mips32 ISA Support",
|
||||
[FeatureCondMov, FeatureBitCount]>;
|
||||
def FeatureMips32r2 : SubtargetFeature<"mips32r2", "MipsArchVersion",
|
||||
"Mips32r2", "Mips32r2 ISA Support",
|
||||
[FeatureMips32, FeatureSEInReg]>;
|
||||
|
|
|
@ -281,10 +281,13 @@ class EffectiveAddress<string instr_asm> :
|
|||
instr_asm, [(set CPURegs:$dst, addr:$addr)], IIAlu>;
|
||||
|
||||
// Count Leading Ones/Zeros in Word
|
||||
class CountLeading<bits<6> func, string instr_asm, SDNode CountOp>:
|
||||
class CountLeading<bits<6> func, string instr_asm, list<dag> pattern>:
|
||||
FR<0x1c, func, (outs CPURegs:$dst), (ins CPURegs:$src),
|
||||
!strconcat(instr_asm, "\t$dst, $src"),
|
||||
[(set CPURegs:$dst, (CountOp CPURegs:$src))], IIAlu>;
|
||||
!strconcat(instr_asm, "\t$dst, $src"), pattern, IIAlu>,
|
||||
Requires<[HasBitCount]> {
|
||||
let shamt = 0;
|
||||
let rt = rd;
|
||||
}
|
||||
|
||||
// Sign Extend in Register.
|
||||
class SignExtInReg<bits<6> func, string instr_asm, ValueType vt>:
|
||||
|
@ -446,10 +449,10 @@ let Predicates = [HasSEInReg] in {
|
|||
}
|
||||
|
||||
/// Count Leading
|
||||
let Predicates = [HasBitCount] in {
|
||||
let rt = 0 in
|
||||
def CLZ : CountLeading<0b010110, "clz", ctlz>;
|
||||
}
|
||||
def CLZ : CountLeading<0b100000, "clz",
|
||||
[(set CPURegs:$dst, (ctlz CPURegs:$src))]>;
|
||||
def CLO : CountLeading<0b100001, "clo",
|
||||
[(set CPURegs:$dst, (ctlz (not CPURegs:$src)))]>;
|
||||
|
||||
/// Byte Swap
|
||||
let Predicates = [HasSwap] in {
|
||||
|
|
Loading…
Reference in New Issue