summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target
diff options
context:
space:
mode:
authorKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-09-27 19:46:41 +0000
committerKonstantin Zhuravlyov <kzhuravl_dev@outlook.com>2018-09-27 19:46:41 +0000
commit9da26b20da9d66cb5d2df265c67c05f59a08557f (patch)
tree6887c0937f7cbb1613aa91a9591d00f9fa8d707c /llvm/lib/Target
parente653b63d83aaac7a547a2c65bd2a70e28f358268 (diff)
downloadbcm5719-llvm-9da26b20da9d66cb5d2df265c67c05f59a08557f.tar.gz
bcm5719-llvm-9da26b20da9d66cb5d2df265c67c05f59a08557f.zip
AMDGPU: Split VOP2Inst into VOP2Inst_e32/e64/sdwa
llvm-svn: 343259
Diffstat (limited to 'llvm/lib/Target')
-rw-r--r--llvm/lib/Target/AMDGPU/VOP2Instructions.td42
1 files changed, 32 insertions, 10 deletions
diff --git a/llvm/lib/Target/AMDGPU/VOP2Instructions.td b/llvm/lib/Target/AMDGPU/VOP2Instructions.td
index bc02978b1a5..be1b5c9b734 100644
--- a/llvm/lib/Target/AMDGPU/VOP2Instructions.td
+++ b/llvm/lib/Target/AMDGPU/VOP2Instructions.td
@@ -116,25 +116,47 @@ class getVOP2Pat64 <SDPatternOperator node, VOPProfile P> : LetDummies {
[(set P.DstVT:$vdst, (node P.Src0VT:$src0, P.Src1VT:$src1))]);
}
-multiclass VOP2Inst <string opName,
- VOPProfile P,
- SDPatternOperator node = null_frag,
- string revOp = opName,
- bit GFX9Renamed = 0> {
-
+multiclass VOP2Inst_e32<string opName,
+ VOPProfile P,
+ SDPatternOperator node = null_frag,
+ string revOp = opName,
+ bit GFX9Renamed = 0> {
let renamedInGFX9 = GFX9Renamed in {
-
def _e32 : VOP2_Pseudo <opName, P, VOPPatOrNull<node,P>.ret>,
Commutable_REV<revOp#"_e32", !eq(revOp, opName)>;
+ } // End renamedInGFX9 = GFX9Renamed
+}
+multiclass VOP2Inst_e64<string opName,
+ VOPProfile P,
+ SDPatternOperator node = null_frag,
+ string revOp = opName,
+ bit GFX9Renamed = 0> {
+ let renamedInGFX9 = GFX9Renamed in {
def _e64 : VOP3_Pseudo <opName, P, getVOP2Pat64<node, P>.ret>,
Commutable_REV<revOp#"_e64", !eq(revOp, opName)>;
+ } // End renamedInGFX9 = GFX9Renamed
+}
- def _sdwa : VOP2_SDWA_Pseudo <opName, P>;
-
- }
+multiclass VOP2Inst_sdwa<string opName,
+ VOPProfile P,
+ SDPatternOperator node = null_frag,
+ string revOp = opName,
+ bit GFX9Renamed = 0> {
+ let renamedInGFX9 = GFX9Renamed in {
+ def _sdwa : VOP2_SDWA_Pseudo <opName, P>;
+ } // End renamedInGFX9 = GFX9Renamed
}
+multiclass VOP2Inst<string opName,
+ VOPProfile P,
+ SDPatternOperator node = null_frag,
+ string revOp = opName,
+ bit GFX9Renamed = 0> :
+ VOP2Inst_e32<opName, P, node, revOp, GFX9Renamed>,
+ VOP2Inst_e64<opName, P, node, revOp, GFX9Renamed>,
+ VOP2Inst_sdwa<opName, P, node, revOp, GFX9Renamed>;
+
multiclass VOP2bInst <string opName,
VOPProfile P,
SDPatternOperator node = null_frag,
OpenPOWER on IntegriCloud