From 305fefbb65c3df7bf5b3a8f6157efe24652c1e56 Mon Sep 17 00:00:00 2001 From: Christian Konig Date: Sat, 16 Feb 2013 11:28:07 +0000 Subject: [PATCH] R600/SI: fix VOPC encoding v2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Previously it only worked because of coincident. v2: fix 64bit versions, use 0x80 (inline 0) instead of SGPR0 for the unused SRC2 This is a candidate for the stable branch. Signed-off-by: Christian König Reviewed-by: Tom Stellard git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@175352 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/R600/SIInstrFormats.td | 57 ++++++++++--------------------- 1 file changed, 18 insertions(+), 39 deletions(-) diff --git a/lib/Target/R600/SIInstrFormats.td b/lib/Target/R600/SIInstrFormats.td index 70401152c7a..bd31bc18463 100644 --- a/lib/Target/R600/SIInstrFormats.td +++ b/lib/Target/R600/SIInstrFormats.td @@ -21,26 +21,12 @@ // //===----------------------------------------------------------------------===// -class VOP3b_2IN op, string opName, RegisterClass dstClass, - RegisterClass src0Class, RegisterClass src1Class, - list pattern> - : VOP3b ; - - -class VOP3_1_32 op, string opName, list pattern> - : VOP3b_2IN ; - class VOP3_32 op, string opName, list pattern> : VOP3 ; class VOP3_64 op, string opName, list pattern> : VOP3 ; - class SOP1_32 op, string opName, list pattern> : SOP1 ; @@ -109,35 +95,28 @@ class SOPK_32 op, string opName, list pattern> class SOPK_64 op, string opName, list pattern> : SOPK ; -class VOPC_Helper op, RegisterClass vrc, RegisterClass arc, - string opName, list pattern> : - VOPC < - op, (ins arc:$src0, vrc:$src1), opName, pattern - >; +multiclass VOPC_Helper op, RegisterClass vrc, RegisterClass arc, + string opName, list pattern> { -multiclass VOPC_32 op, string opName, list pattern> { - - def _e32 : VOPC_Helper < - {op{7}, op{6}, op{5}, op{4}, op{3}, op{2}, op{1}, op{0}}, - VReg_32, AllReg_32, opName, pattern - >; - - def _e64 : VOP3_1_32 < - op, - opName, pattern - >; -} - -multiclass VOPC_64 op, string opName, list pattern> { - - def _e32 : VOPC_Helper ; - - def _e64 : VOP3_64 < + def _e32 : VOPC ; + def _e64 : VOP3 < {0, op{7}, op{6}, op{5}, op{4}, op{3}, op{2}, op{1}, op{0}}, - opName, [] - >; + (outs SReg_1:$dst), + (ins arc:$src0, vrc:$src1, + InstFlag:$abs, InstFlag:$clamp, + InstFlag:$omod, InstFlag:$neg), + opName, pattern + > { + let SRC2 = 0x80; + } } +multiclass VOPC_32 op, string opName, list pattern> + : VOPC_Helper ; + +multiclass VOPC_64 op, string opName, list pattern> + : VOPC_Helper ; + class SOPC_32 op, string opName, list pattern> : SOPC ;