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 ;