<html><head><meta http-equiv="Content-Type" content="text/html charset=windows-1252"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><br><div><div>On Dec 13, 2013, at 9:47 PM, Tom Stellard <<a href="mailto:tom@stellard.net">tom@stellard.net</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">On Fri, Dec 13, 2013 at 06:33:33PM -0800, Matt Arsenault wrote:<br><blockquote type="cite">On 12/13/2013 06:29 PM, Tom Stellard wrote:<br><blockquote type="cite">On Wed, Dec 11, 2013 at 08:17:47PM -0800, Matt Arsenault wrote:<br><blockquote type="cite">  Move VCC defs to VOPC_32<br><br><a href="http://llvm-reviews.chandlerc.com/D2377">http://llvm-reviews.chandlerc.com/D2377</a><br><br>CHANGE SINCE LAST DIFF<br>  http://llvm-reviews.chandlerc.com/D2377?vs=6014&id=6046#toc<br><br>Files:<br>  lib/Target/R600/SIInstrInfo.td<br>  lib/Target/R600/SIInstructions.td<br><br>Index: lib/Target/R600/SIInstrInfo.td<br>===================================================================<br>--- lib/Target/R600/SIInstrInfo.td<br>+++ lib/Target/R600/SIInstrInfo.td<br>@@ -319,7 +319,9 @@<br>   def _e32 : VOPC <<br>     op, (ins arc:$src0, vrc:$src1),<br>     opName#"_e32 $dst, $src0, $src1", []<br>-  >, VOP <opName>;<br>+  >, VOP <opName> {<br>+    let Defs = [VCC];<br>+  }<br><br>   def _e64 : VOP3 <<br>     {0, op{7}, op{6}, op{5}, op{4}, op{3}, op{2}, op{1}, op{0}},<br>Index: lib/Target/R600/SIInstructions.td<br>===================================================================<br>--- lib/Target/R600/SIInstructions.td<br>+++ lib/Target/R600/SIInstructions.td<br>@@ -114,7 +114,7 @@<br><blockquote type="cite">;<br></blockquote> */<br><br>-let isCompare = 1 in {<br>+let isCompare = 1, Defs = [SCC] in {<br> def S_CMPK_LG_I32 : SOPK_32 <0x00000004, "S_CMPK_LG_I32", []>;<br> def S_CMPK_GT_I32 : SOPK_32 <0x00000005, "S_CMPK_GT_I32", []>;<br> def S_CMPK_GE_I32 : SOPK_32 <0x00000006, "S_CMPK_GE_I32", []>;<br>@@ -126,7 +126,7 @@<br> def S_CMPK_GE_U32 : SOPK_32 <0x0000000c, "S_CMPK_GE_U32", []>;<br> def S_CMPK_LT_U32 : SOPK_32 <0x0000000d, "S_CMPK_LT_U32", []>;<br> def S_CMPK_LE_U32 : SOPK_32 <0x0000000e, "S_CMPK_LE_U32", []>;<br>-} // End isCompare = 1<br>+} // End isCompare = 1, Defs = [SCC]<br><br> let Defs = [SCC], isCommutable = 1 in {<br>   def S_ADDK_I32 : SOPK_32 <0x0000000f, "S_ADDK_I32", []>;<br>@@ -159,7 +159,7 @@<br> defm V_CMP_NLT_F32 : VOPC_32 <0x0000000e, "V_CMP_NLT_F32">;<br> defm V_CMP_TRU_F32 : VOPC_32 <0x0000000f, "V_CMP_TRU_F32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br></blockquote>I think you forgot to remove the VCC defs in a few places.<br><br>-Tom<br></blockquote>No, the places that also set EXEC need to specify VCC also. Otherwise<span class="Apple-converted-space"> </span><br>you overwrite Defs with just [EXEC], it isn't appended.<br></blockquote><br>OK, then I think we'll have to move the EXEC and VCC defs into the<br>VOPC_32 multiclass.<br><br>-Tom<br><br></div></blockquote><div><br></div><div>Do you mean assume VOPC instructions set EXEC and then specify sets just VCC on the ones that don’t? That seems more confusing. Or do you mean a subclass of VOPC for instructions that set both?</div><br><blockquote type="cite"><div style="font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><blockquote type="cite"><blockquote type="cite"><br><blockquote type="cite"><br> defm V_CMPX_F_F32 : VOPC_32 <0x00000010, "V_CMPX_F_F32">;<br> defm V_CMPX_LT_F32 : VOPC_32 <0x00000011, "V_CMPX_LT_F32">;<br>@@ -178,7 +178,7 @@<br> defm V_CMPX_NLT_F32 : VOPC_32 <0x0000001e, "V_CMPX_NLT_F32">;<br> defm V_CMPX_TRU_F32 : VOPC_32 <0x0000001f, "V_CMPX_TRU_F32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_F_F64 : VOPC_64 <0x00000020, "V_CMP_F_F64">;<br> defm V_CMP_LT_F64 : VOPC_64 <0x00000021, "V_CMP_LT_F64", f64, COND_OLT>;<br>@@ -235,7 +235,7 @@<br> defm V_CMPS_NLT_F32 : VOPC_32 <0x0000004e, "V_CMPS_NLT_F32">;<br> defm V_CMPS_TRU_F32 : VOPC_32 <0x0000004f, "V_CMPS_TRU_F32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPSX_F_F32 : VOPC_32 <0x00000050, "V_CMPSX_F_F32">;<br> defm V_CMPSX_LT_F32 : VOPC_32 <0x00000051, "V_CMPSX_LT_F32">;<br>@@ -254,7 +254,7 @@<br> defm V_CMPSX_NLT_F32 : VOPC_32 <0x0000005e, "V_CMPSX_NLT_F32">;<br> defm V_CMPSX_TRU_F32 : VOPC_32 <0x0000005f, "V_CMPSX_TRU_F32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMPS_F_F64 : VOPC_64 <0x00000060, "V_CMPS_F_F64">;<br> defm V_CMPS_LT_F64 : VOPC_64 <0x00000061, "V_CMPS_LT_F64">;<br>@@ -303,7 +303,7 @@<br> defm V_CMP_GE_I32 : VOPC_32 <0x00000086, "V_CMP_GE_I32", i32, COND_SGE>;<br> defm V_CMP_T_I32 : VOPC_32 <0x00000087, "V_CMP_T_I32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPX_F_I32 : VOPC_32 <0x00000090, "V_CMPX_F_I32">;<br> defm V_CMPX_LT_I32 : VOPC_32 <0x00000091, "V_CMPX_LT_I32">;<br>@@ -314,7 +314,7 @@<br> defm V_CMPX_GE_I32 : VOPC_32 <0x00000096, "V_CMPX_GE_I32">;<br> defm V_CMPX_T_I32 : VOPC_32 <0x00000097, "V_CMPX_T_I32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_F_I64 : VOPC_64 <0x000000a0, "V_CMP_F_I64">;<br> defm V_CMP_LT_I64 : VOPC_64 <0x000000a1, "V_CMP_LT_I64", i64, COND_SLT>;<br>@@ -347,7 +347,7 @@<br> defm V_CMP_GE_U32 : VOPC_32 <0x000000c6, "V_CMP_GE_U32", i32, COND_UGE>;<br> defm V_CMP_T_U32 : VOPC_32 <0x000000c7, "V_CMP_T_U32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPX_F_U32 : VOPC_32 <0x000000d0, "V_CMPX_F_U32">;<br> defm V_CMPX_LT_U32 : VOPC_32 <0x000000d1, "V_CMPX_LT_U32">;<br>@@ -358,7 +358,7 @@<br> defm V_CMPX_GE_U32 : VOPC_32 <0x000000d6, "V_CMPX_GE_U32">;<br> defm V_CMPX_T_U32 : VOPC_32 <0x000000d7, "V_CMPX_T_U32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_F_U64 : VOPC_64 <0x000000e0, "V_CMP_F_U64">;<br> defm V_CMP_LT_U64 : VOPC_64 <0x000000e1, "V_CMP_LT_U64", i64, COND_ULT>;<br>@@ -384,9 +384,9 @@<br><br> defm V_CMP_CLASS_F32 : VOPC_32 <0x00000088, "V_CMP_CLASS_F32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br> defm V_CMPX_CLASS_F32 : VOPC_32 <0x00000098, "V_CMPX_CLASS_F32">;<br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_CLASS_F64 : VOPC_64 <0x000000a8, "V_CMP_CLASS_F64">;<br>Index: lib/Target/R600/SIInstrInfo.td<br>===================================================================<br>--- lib/Target/R600/SIInstrInfo.td<br>+++ lib/Target/R600/SIInstrInfo.td<br>@@ -319,7 +319,9 @@<br>   def _e32 : VOPC <<br>     op, (ins arc:$src0, vrc:$src1),<br>     opName#"_e32 $dst, $src0, $src1", []<br>-  >, VOP <opName>;<br>+  >, VOP <opName> {<br>+    let Defs = [VCC];<br>+  }<br><br>   def _e64 : VOP3 <<br>     {0, op{7}, op{6}, op{5}, op{4}, op{3}, op{2}, op{1}, op{0}},<br>Index: lib/Target/R600/SIInstructions.td<br>===================================================================<br>--- lib/Target/R600/SIInstructions.td<br>+++ lib/Target/R600/SIInstructions.td<br>@@ -114,7 +114,7 @@<br><blockquote type="cite">;<br></blockquote> */<br><br>-let isCompare = 1 in {<br>+let isCompare = 1, Defs = [SCC] in {<br> def S_CMPK_LG_I32 : SOPK_32 <0x00000004, "S_CMPK_LG_I32", []>;<br> def S_CMPK_GT_I32 : SOPK_32 <0x00000005, "S_CMPK_GT_I32", []>;<br> def S_CMPK_GE_I32 : SOPK_32 <0x00000006, "S_CMPK_GE_I32", []>;<br>@@ -126,7 +126,7 @@<br> def S_CMPK_GE_U32 : SOPK_32 <0x0000000c, "S_CMPK_GE_U32", []>;<br> def S_CMPK_LT_U32 : SOPK_32 <0x0000000d, "S_CMPK_LT_U32", []>;<br> def S_CMPK_LE_U32 : SOPK_32 <0x0000000e, "S_CMPK_LE_U32", []>;<br>-} // End isCompare = 1<br>+} // End isCompare = 1, Defs = [SCC]<br><br> let Defs = [SCC], isCommutable = 1 in {<br>   def S_ADDK_I32 : SOPK_32 <0x0000000f, "S_ADDK_I32", []>;<br>@@ -159,7 +159,7 @@<br> defm V_CMP_NLT_F32 : VOPC_32 <0x0000000e, "V_CMP_NLT_F32">;<br> defm V_CMP_TRU_F32 : VOPC_32 <0x0000000f, "V_CMP_TRU_F32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPX_F_F32 : VOPC_32 <0x00000010, "V_CMPX_F_F32">;<br> defm V_CMPX_LT_F32 : VOPC_32 <0x00000011, "V_CMPX_LT_F32">;<br>@@ -178,7 +178,7 @@<br> defm V_CMPX_NLT_F32 : VOPC_32 <0x0000001e, "V_CMPX_NLT_F32">;<br> defm V_CMPX_TRU_F32 : VOPC_32 <0x0000001f, "V_CMPX_TRU_F32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_F_F64 : VOPC_64 <0x00000020, "V_CMP_F_F64">;<br> defm V_CMP_LT_F64 : VOPC_64 <0x00000021, "V_CMP_LT_F64", f64, COND_OLT>;<br>@@ -235,7 +235,7 @@<br> defm V_CMPS_NLT_F32 : VOPC_32 <0x0000004e, "V_CMPS_NLT_F32">;<br> defm V_CMPS_TRU_F32 : VOPC_32 <0x0000004f, "V_CMPS_TRU_F32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPSX_F_F32 : VOPC_32 <0x00000050, "V_CMPSX_F_F32">;<br> defm V_CMPSX_LT_F32 : VOPC_32 <0x00000051, "V_CMPSX_LT_F32">;<br>@@ -254,7 +254,7 @@<br> defm V_CMPSX_NLT_F32 : VOPC_32 <0x0000005e, "V_CMPSX_NLT_F32">;<br> defm V_CMPSX_TRU_F32 : VOPC_32 <0x0000005f, "V_CMPSX_TRU_F32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMPS_F_F64 : VOPC_64 <0x00000060, "V_CMPS_F_F64">;<br> defm V_CMPS_LT_F64 : VOPC_64 <0x00000061, "V_CMPS_LT_F64">;<br>@@ -303,7 +303,7 @@<br> defm V_CMP_GE_I32 : VOPC_32 <0x00000086, "V_CMP_GE_I32", i32, COND_SGE>;<br> defm V_CMP_T_I32 : VOPC_32 <0x00000087, "V_CMP_T_I32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPX_F_I32 : VOPC_32 <0x00000090, "V_CMPX_F_I32">;<br> defm V_CMPX_LT_I32 : VOPC_32 <0x00000091, "V_CMPX_LT_I32">;<br>@@ -314,7 +314,7 @@<br> defm V_CMPX_GE_I32 : VOPC_32 <0x00000096, "V_CMPX_GE_I32">;<br> defm V_CMPX_T_I32 : VOPC_32 <0x00000097, "V_CMPX_T_I32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_F_I64 : VOPC_64 <0x000000a0, "V_CMP_F_I64">;<br> defm V_CMP_LT_I64 : VOPC_64 <0x000000a1, "V_CMP_LT_I64", i64, COND_SLT>;<br>@@ -347,7 +347,7 @@<br> defm V_CMP_GE_U32 : VOPC_32 <0x000000c6, "V_CMP_GE_U32", i32, COND_UGE>;<br> defm V_CMP_T_U32 : VOPC_32 <0x000000c7, "V_CMP_T_U32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br><br> defm V_CMPX_F_U32 : VOPC_32 <0x000000d0, "V_CMPX_F_U32">;<br> defm V_CMPX_LT_U32 : VOPC_32 <0x000000d1, "V_CMPX_LT_U32">;<br>@@ -358,7 +358,7 @@<br> defm V_CMPX_GE_U32 : VOPC_32 <0x000000d6, "V_CMPX_GE_U32">;<br> defm V_CMPX_T_U32 : VOPC_32 <0x000000d7, "V_CMPX_T_U32">;<br><br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_F_U64 : VOPC_64 <0x000000e0, "V_CMP_F_U64">;<br> defm V_CMP_LT_U64 : VOPC_64 <0x000000e1, "V_CMP_LT_U64", i64, COND_ULT>;<br>@@ -384,9 +384,9 @@<br><br> defm V_CMP_CLASS_F32 : VOPC_32 <0x00000088, "V_CMP_CLASS_F32">;<br><br>-let hasSideEffects = 1, Defs = [EXEC] in {<br>+let hasSideEffects = 1, Defs = [EXEC, VCC] in {<br> defm V_CMPX_CLASS_F32 : VOPC_32 <0x00000098, "V_CMPX_CLASS_F32">;<br>-} // End hasSideEffects = 1, Defs = [EXEC]<br>+} // End hasSideEffects = 1, Defs = [EXEC, VCC]<br><br> defm V_CMP_CLASS_F64 : VOPC_64 <0x000000a8, "V_CMP_CLASS_F64">;<br><br>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits<br></blockquote><br></blockquote><br><br></blockquote>_______________________________________________<br>llvm-commits mailing list<br><a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</div></blockquote></div><br></body></html>