mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-07 12:28:24 +00:00
R600/SI: Add a generic pseudo EXP instruction
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@218767 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -589,14 +589,6 @@ class MIMG <bits<7> op, dag outs, dag ins, string asm, list<dag> pattern> :
|
|||||||
let MIMG = 1;
|
let MIMG = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
def EXP : InstSI<
|
|
||||||
(outs),
|
|
||||||
(ins i32imm:$en, i32imm:$tgt, i32imm:$compr, i32imm:$done, i32imm:$vm,
|
|
||||||
VReg_32:$src0, VReg_32:$src1, VReg_32:$src2, VReg_32:$src3),
|
|
||||||
"EXP $en, $tgt, $compr, $done, $vm, $src0, $src1, $src2, $src3",
|
|
||||||
[] >, EXPe {
|
|
||||||
|
|
||||||
let EXP_CNT = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
} // End Uses = [EXEC]
|
} // End Uses = [EXEC]
|
||||||
|
@@ -255,6 +255,30 @@ class SIMCInstr <string pseudo, int subtarget> {
|
|||||||
int Subtarget = subtarget;
|
int Subtarget = subtarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
// EXP classes
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
class EXPCommon : InstSI<
|
||||||
|
(outs),
|
||||||
|
(ins i32imm:$en, i32imm:$tgt, i32imm:$compr, i32imm:$done, i32imm:$vm,
|
||||||
|
VReg_32:$src0, VReg_32:$src1, VReg_32:$src2, VReg_32:$src3),
|
||||||
|
"EXP $en, $tgt, $compr, $done, $vm, $src0, $src1, $src2, $src3",
|
||||||
|
[] > {
|
||||||
|
|
||||||
|
let EXP_CNT = 1;
|
||||||
|
let Uses = [EXEC];
|
||||||
|
}
|
||||||
|
|
||||||
|
multiclass EXP_m {
|
||||||
|
|
||||||
|
let isPseudo = 1 in {
|
||||||
|
def "" : EXPCommon, SIMCInstr <"EXP", SISubtarget.NONE> ;
|
||||||
|
}
|
||||||
|
|
||||||
|
def _si : EXPCommon, SIMCInstr <"EXP", SISubtarget.SI>, EXPe;
|
||||||
|
}
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Scalar classes
|
// Scalar classes
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
@@ -37,6 +37,12 @@ def WAIT_FLAG : InstFlag<"printWaitFlag">;
|
|||||||
|
|
||||||
let SubtargetPredicate = isSI in {
|
let SubtargetPredicate = isSI in {
|
||||||
|
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
// EXP Instructions
|
||||||
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
|
defm EXP : EXP_m;
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// SMRD Instructions
|
// SMRD Instructions
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
Reference in New Issue
Block a user