summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2015-10-07 01:36:00 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2015-10-07 01:36:00 +0000
commit10e6a61892f877a51034abf283deaa8c488779d0 (patch)
tree0605dd57c9ea76bebdc4f9094dc5b2ea9d25b31f /llvm/lib
parent58497289124e34649d110b7114842a0b68a3f4a0 (diff)
downloadbcm5719-llvm-10e6a61892f877a51034abf283deaa8c488779d0.tar.gz
bcm5719-llvm-10e6a61892f877a51034abf283deaa8c488779d0.zip
AMDGPU: Add comment for VOP2b operand class
Because of the constant bus requirement, it is never legal to use a literal constant for these instructions despite the encoding allowing it. This was already doing the right thing, but note why. llvm-svn: 249500
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AMDGPU/SIInstrInfo.td5
1 files changed, 5 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIInstrInfo.td b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
index ce1d081f437..61e9022c47b 100644
--- a/llvm/lib/Target/AMDGPU/SIInstrInfo.td
+++ b/llvm/lib/Target/AMDGPU/SIInstrInfo.td
@@ -1187,6 +1187,11 @@ def VOP2b_I32_I1_I32_I32 : VOPProfile<[i32, i32, i32, untyped]> {
// Write out to vcc or arbitrary SGPR and read in from vcc or
// arbitrary SGPR.
def VOP2b_I32_I1_I32_I32_I1 : VOPProfile<[i32, i32, i32, i1]> {
+ // We use VCSrc_32 to exclude literal constants, even though the
+ // encoding normally allows them since the implicit VCC use means
+ // using one would always violate the constant bus
+ // restriction. SGPRs are still allowed because it should
+ // technically be possible to use VCC again as src0.
let Src0RC32 = VCSrc_32;
let Asm32 = "$dst, vcc, $src0, $src1, vcc";
let Asm64 = "$dst, $sdst, $src0, $src1, $src2";
OpenPOWER on IntegriCloud