From f7082f9bd7adadd0e1617426394c60cfcbc1cfda Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 1 Oct 2014 14:44:45 +0000 Subject: [PATCH] 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 --- lib/Target/R600/SIInstrFormats.td | 8 -------- lib/Target/R600/SIInstrInfo.td | 24 ++++++++++++++++++++++++ lib/Target/R600/SIInstructions.td | 6 ++++++ 3 files changed, 30 insertions(+), 8 deletions(-) diff --git a/lib/Target/R600/SIInstrFormats.td b/lib/Target/R600/SIInstrFormats.td index 993b0920722..f600dbff543 100644 --- a/lib/Target/R600/SIInstrFormats.td +++ b/lib/Target/R600/SIInstrFormats.td @@ -589,14 +589,6 @@ class MIMG op, dag outs, dag ins, string asm, list pattern> : 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] diff --git a/lib/Target/R600/SIInstrInfo.td b/lib/Target/R600/SIInstrInfo.td index e7c0deac7e3..831a4611252 100644 --- a/lib/Target/R600/SIInstrInfo.td +++ b/lib/Target/R600/SIInstrInfo.td @@ -255,6 +255,30 @@ class SIMCInstr { 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 //===----------------------------------------------------------------------===// diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td index 943466a8d52..29ea13559c3 100644 --- a/lib/Target/R600/SIInstructions.td +++ b/lib/Target/R600/SIInstructions.td @@ -37,6 +37,12 @@ def WAIT_FLAG : InstFlag<"printWaitFlag">; let SubtargetPredicate = isSI in { +//===----------------------------------------------------------------------===// +// EXP Instructions +//===----------------------------------------------------------------------===// + +defm EXP : EXP_m; + //===----------------------------------------------------------------------===// // SMRD Instructions //===----------------------------------------------------------------------===// -- 2.34.1