summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEli Friedman <eli.friedman@gmail.com>2009-06-06 04:17:04 +0000
committerEli Friedman <eli.friedman@gmail.com>2009-06-06 04:17:04 +0000
commit6c101ebfa85c25f514363adddd3f68cd90c6f6d9 (patch)
tree0e744ee2076665388eaf79f0840e3d1fcf5fa1e0
parent8544647e9c17bcf88b3bb790d496ba11677506f9 (diff)
downloadbcm5719-llvm-6c101ebfa85c25f514363adddd3f68cd90c6f6d9.tar.gz
bcm5719-llvm-6c101ebfa85c25f514363adddd3f68cd90c6f6d9.zip
Get rid of a bogus pattern that interferes with optimization.
llvm-svn: 72985
-rw-r--r--llvm/lib/Target/X86/X86InstrMMX.td7
-rw-r--r--llvm/test/CodeGen/X86/2009-06-05-ScalarToVectorByteMMX.ll7
2 files changed, 7 insertions, 7 deletions
diff --git a/llvm/lib/Target/X86/X86InstrMMX.td b/llvm/lib/Target/X86/X86InstrMMX.td
index 8f287e17dc3..38c54712f18 100644
--- a/llvm/lib/Target/X86/X86InstrMMX.td
+++ b/llvm/lib/Target/X86/X86InstrMMX.td
@@ -605,13 +605,6 @@ let AddedComplexity = 15 in {
(MMX_PUNPCKLDQrr VR64:$src, (MMX_V_SET0))>;
}
-// Scalar to v4i16 / v8i8. The source may be a GR32, but only the lower
-// 8 or 16-bits matter.
-def : Pat<(bc_v8i8 (v2i32 (scalar_to_vector GR32:$src))),
- (MMX_MOVD64rr GR32:$src)>;
-def : Pat<(bc_v4i16 (v2i32 (scalar_to_vector GR32:$src))),
- (MMX_MOVD64rr GR32:$src)>;
-
// Patterns to perform canonical versions of vector shuffling.
let AddedComplexity = 10 in {
def : Pat<(v8i8 (mmx_unpckl_undef VR64:$src, (undef))),
diff --git a/llvm/test/CodeGen/X86/2009-06-05-ScalarToVectorByteMMX.ll b/llvm/test/CodeGen/X86/2009-06-05-ScalarToVectorByteMMX.ll
new file mode 100644
index 00000000000..94df530ec0e
--- /dev/null
+++ b/llvm/test/CodeGen/X86/2009-06-05-ScalarToVectorByteMMX.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | llc -march=x86 -mattr=+mmx | not grep movl
+
+define <8 x i8> @a(i8 zeroext %x) nounwind {
+ %r = insertelement <8 x i8> undef, i8 %x, i32 0
+ ret <8 x i8> %r
+}
+
OpenPOWER on IntegriCloud