diff options
| author | Tom Stellard <thomas.stellard@amd.com> | 2014-10-01 14:44:45 +0000 |
|---|---|---|
| committer | Tom Stellard <thomas.stellard@amd.com> | 2014-10-01 14:44:45 +0000 |
| commit | 3a35d8f4c26ea2f8527fbbe6f430fe2a7d8b6cc1 (patch) | |
| tree | bafa56b935fad238f9fd32b5fef26ab2bb3ccea9 | |
| parent | 0c238c2fbe9afc56f342de706e0ca59f6f29a9f6 (diff) | |
| download | bcm5719-llvm-3a35d8f4c26ea2f8527fbbe6f430fe2a7d8b6cc1.tar.gz bcm5719-llvm-3a35d8f4c26ea2f8527fbbe6f430fe2a7d8b6cc1.zip | |
R600/SI: Add a generic pseudo EXP instruction
llvm-svn: 218767
| -rw-r--r-- | llvm/lib/Target/R600/SIInstrFormats.td | 8 | ||||
| -rw-r--r-- | llvm/lib/Target/R600/SIInstrInfo.td | 24 | ||||
| -rw-r--r-- | llvm/lib/Target/R600/SIInstructions.td | 6 |
3 files changed, 30 insertions, 8 deletions
diff --git a/llvm/lib/Target/R600/SIInstrFormats.td b/llvm/lib/Target/R600/SIInstrFormats.td index 993b0920722..f600dbff543 100644 --- a/llvm/lib/Target/R600/SIInstrFormats.td +++ b/llvm/lib/Target/R600/SIInstrFormats.td @@ -589,14 +589,6 @@ class MIMG <bits<7> op, dag outs, dag ins, string asm, list<dag> 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/llvm/lib/Target/R600/SIInstrInfo.td b/llvm/lib/Target/R600/SIInstrInfo.td index e7c0deac7e3..831a4611252 100644 --- a/llvm/lib/Target/R600/SIInstrInfo.td +++ b/llvm/lib/Target/R600/SIInstrInfo.td @@ -256,6 +256,30 @@ class SIMCInstr <string pseudo, int 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/llvm/lib/Target/R600/SIInstructions.td b/llvm/lib/Target/R600/SIInstructions.td index 943466a8d52..29ea13559c3 100644 --- a/llvm/lib/Target/R600/SIInstructions.td +++ b/llvm/lib/Target/R600/SIInstructions.td @@ -38,6 +38,12 @@ def WAIT_FLAG : InstFlag<"printWaitFlag">; let SubtargetPredicate = isSI in { //===----------------------------------------------------------------------===// +// EXP Instructions +//===----------------------------------------------------------------------===// + +defm EXP : EXP_m; + +//===----------------------------------------------------------------------===// // SMRD Instructions //===----------------------------------------------------------------------===// |

