[llvm] r246719 - [X86] Cleanup nontemporal fragments. NFCI.

Ahmed Bougacha via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 2 15:27:38 PDT 2015


Author: ab
Date: Wed Sep  2 17:27:38 2015
New Revision: 246719

URL: http://llvm.org/viewvc/llvm-project?rev=246719&view=rev
Log:
[X86] Cleanup nontemporal fragments. NFCI.

We can chain other fragments to avoid repeating conditions.
This also fixes a potential bug (that realistically can't happen),
where we would match indexed nontemporal stores for i32/i64.

Modified:
    llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td

Modified: llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td?rev=246719&r1=246718&r2=246719&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td (original)
+++ llvm/trunk/lib/Target/X86/X86InstrFragmentsSIMD.td Wed Sep  2 17:27:38 2015
@@ -620,27 +620,18 @@ def memopmmx  : PatFrag<(ops node:$ptr),
 // MOVNT Support
 // Like 'store', but requires the non-temporal bit to be set
 def nontemporalstore : PatFrag<(ops node:$val, node:$ptr),
-                           (st node:$val, node:$ptr), [{
-  if (StoreSDNode *ST = dyn_cast<StoreSDNode>(N))
-    return ST->isNonTemporal();
-  return false;
+                               (store node:$val, node:$ptr), [{
+  return cast<StoreSDNode>(N)->isNonTemporal();
 }]>;
 
 def alignednontemporalstore : PatFrag<(ops node:$val, node:$ptr),
-                                    (st node:$val, node:$ptr), [{
-  if (StoreSDNode *ST = dyn_cast<StoreSDNode>(N))
-    return ST->isNonTemporal() && !ST->isTruncatingStore() &&
-           ST->getAddressingMode() == ISD::UNINDEXED &&
-           ST->getAlignment() >= 16;
-  return false;
+                                      (nontemporalstore node:$val, node:$ptr), [{
+  return cast<StoreSDNode>(N)->getAlignment() >= 16;
 }]>;
 
 def unalignednontemporalstore : PatFrag<(ops node:$val, node:$ptr),
-                                      (st node:$val, node:$ptr), [{
-  if (StoreSDNode *ST = dyn_cast<StoreSDNode>(N))
-    return ST->isNonTemporal() &&
-           ST->getAlignment() < 16;
-  return false;
+                                        (nontemporalstore node:$val, node:$ptr), [{
+  return cast<StoreSDNode>(N)->getAlignment() < 16;
 }]>;
 
 def mgatherv4i32 : PatFrag<(ops node:$src1, node:$src2, node:$src3),




More information about the llvm-commits mailing list