V_SET0 has no side effects.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 14 Oct 2011 00:39:50 +0000 (00:39 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Fri, 14 Oct 2011 00:39:50 +0000 (00:39 +0000)
TableGen will mark any pattern-less instruction as having unmodeled side
effects. This is extra bad for V_SET0 which gets rematerialized a lot.

This was part of the cause for PR11125, but the real bug was fixed
in r141923.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@141924 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86InstrSSE.td

index 520de683f1065a566e7ce892708dfc13e9b963d1..d3ced23450feeddea95be0c9ceb4a25b2197f6a3 100644 (file)
@@ -266,7 +266,7 @@ let isReMaterializable = 1, isAsCheapAsAMove = 1, isCodeGenOnly = 1,
 // We set canFoldAsLoad because this can be converted to a constant-pool
 // load of an all-zeros value if folding it would be beneficial.
 let isReMaterializable = 1, isAsCheapAsAMove = 1, canFoldAsLoad = 1,
-    isPseudo = 1 in {
+    isPseudo = 1, neverHasSideEffects = 1 in {
 def V_SET0 : I<0, Pseudo, (outs VR128:$dst), (ins), "", []>;
 }