diff options
author | Chris Lattner <sabre@nondot.org> | 2010-09-01 05:14:33 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-09-01 05:14:33 +0000 |
commit | 91abace4ef6fdfe01bcebfb8e90938e71f8a5c4f (patch) | |
tree | d46cdf3f5a86063501ce221befffc18a044a1a37 /test/Transforms | |
parent | 54d24025d611cb800182765734845b01b232a630 (diff) | |
download | external_llvm-91abace4ef6fdfe01bcebfb8e90938e71f8a5c4f.zip external_llvm-91abace4ef6fdfe01bcebfb8e90938e71f8a5c4f.tar.gz external_llvm-91abace4ef6fdfe01bcebfb8e90938e71f8a5c4f.tar.bz2 |
add a gross hack to work around a problem that Argiris reported
on llvmdev: SRoA is introducing MMX datatypes like <1 x i64>,
which then cause random problems because the X86 backend is
producing mmx stuff without inserting proper emms calls.
In the short term, force off MMX datatypes. In the long term,
the X86 backend should not select generic vector types to MMX
registers. This is being worked on, but won't be done in time
for 2.8. rdar://8380055
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112696 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/ScalarRepl/vector_promote.ll | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/test/Transforms/ScalarRepl/vector_promote.ll b/test/Transforms/ScalarRepl/vector_promote.ll index dd4251b..5287cbe 100644 --- a/test/Transforms/ScalarRepl/vector_promote.ll +++ b/test/Transforms/ScalarRepl/vector_promote.ll @@ -85,3 +85,17 @@ define i32 @test5(float %X) { ;; should turn into bitcast. ; CHECK-NEXT: ret i32 } + +;; should not turn into <1 x i64> - It is a banned MMX datatype. +;; rdar://8380055 +define i64 @test6(<2 x float> %X) { + %X_addr = alloca <2 x float> + store <2 x float> %X, <2 x float>* %X_addr + %P = bitcast <2 x float>* %X_addr to i64* + %tmp = load i64* %P + ret i64 %tmp +; CHECK: @test6 +; CHECK-NEXT: bitcast <2 x float> %X to i64 +; CHECK-NEXT: ret i64 +} + |