diff options
| author | Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> | 2018-09-27 19:46:41 +0000 |
|---|---|---|
| committer | Konstantin Zhuravlyov <kzhuravl_dev@outlook.com> | 2018-09-27 19:46:41 +0000 |
| commit | 9da26b20da9d66cb5d2df265c67c05f59a08557f (patch) | |
| tree | 6887c0937f7cbb1613aa91a9591d00f9fa8d707c /llvm/lib/Target | |
| parent | e653b63d83aaac7a547a2c65bd2a70e28f358268 (diff) | |
| download | bcm5719-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.td | 42 |
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, |

