diff options
| author | Jay Foad <jay.foad@gmail.com> | 2019-07-10 14:53:47 +0000 |
|---|---|---|
| committer | Jay Foad <jay.foad@gmail.com> | 2019-07-10 14:53:47 +0000 |
| commit | bba37e89a57acfb161549b5a57acbe2a228331b8 (patch) | |
| tree | 404373619450a04851aca76e6f92d37803358380 /llvm/lib/Target | |
| parent | a23c5694fbb5b96d0e1a5063b104cc9274611274 (diff) | |
| download | bcm5719-llvm-bba37e89a57acfb161549b5a57acbe2a228331b8.tar.gz bcm5719-llvm-bba37e89a57acfb161549b5a57acbe2a228331b8.zip | |
[AMDGPU] Allow abs/neg source modifiers on v_cndmask_b32
Summary:
D59191 added support for these modifiers in the assembler and
disassembler. This patch just teaches instruction selection that it can
use them.
Reviewers: arsenm, tstellar
Subscribers: kzhuravl, jvesely, wdng, nhaehnle, yaxunl, dstuttard, tpr, t-tye, hiraditya, llvm-commits
Tags: #llvm
Differential Revision: https://reviews.llvm.org/D64497
llvm-svn: 365640
Diffstat (limited to 'llvm/lib/Target')
| -rw-r--r-- | llvm/lib/Target/AMDGPU/SIInstructions.td | 15 |
1 files changed, 8 insertions, 7 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstructions.td b/llvm/lib/Target/AMDGPU/SIInstructions.td index d4612067096..f054dc8cd35 100644 --- a/llvm/lib/Target/AMDGPU/SIInstructions.td +++ b/llvm/lib/Target/AMDGPU/SIInstructions.td @@ -746,17 +746,18 @@ def : FMADModsPat<V_MAD_F16, AMDGPUfmad_ftz, f16> { let SubtargetPredicate = Has16BitInsts; } -multiclass SelectPat <ValueType vt, Instruction inst> { +multiclass SelectPat <ValueType vt> { def : GCNPat < - (vt (select i1:$src0, vt:$src1, vt:$src2)), - (inst (i32 0), $src2, (i32 0), $src1, $src0) + (vt (select i1:$src0, (VOP3Mods vt:$src1, i32:$src1_mods), + (VOP3Mods vt:$src2, i32:$src2_mods))), + (V_CNDMASK_B32_e64 $src2_mods, $src2, $src1_mods, $src1, $src0) >; } -defm : SelectPat <i16, V_CNDMASK_B32_e64>; -defm : SelectPat <i32, V_CNDMASK_B32_e64>; -defm : SelectPat <f16, V_CNDMASK_B32_e64>; -defm : SelectPat <f32, V_CNDMASK_B32_e64>; +defm : SelectPat <i16>; +defm : SelectPat <i32>; +defm : SelectPat <f16>; +defm : SelectPat <f32>; let AddedComplexity = 1 in { def : GCNPat < |

