Merging r259346 (with adjustments for r258867):
[oota-llvm.git] / test / Bitcode / shuffle.ll
1 ; RUN: llvm-as < %s | llvm-dis -disable-output
2 ; RUN: verify-uselistorder < %s
3
4 ; <rdar://problem/8622574>
5 ; tests the bitcodereader can handle the case where the reader will initially
6 ; create shuffle with a place holder mask.
7
8
9 define <4 x float> @test(<2 x double> %d2)  {
10 entry:
11   %call20.i = tail call <4 x float> @cmp(<2 x double> %d2,
12                                         <2 x double> bitcast (
13                                           <4 x float> shufflevector (
14                                             <3 x float> shufflevector (
15                                               <4 x float> shufflevector (
16                                                 <3 x float> bitcast (
17                                                   i96 trunc (
18                                                     i128 bitcast (<2 x double> bitcast (
19                                                       <4 x i32> <i32 0, i32 0, i32 0, i32 undef> to <2 x double>)
20                                                     to i128) to i96)
21                                                   to <3 x float>),
22                                                 <3 x float> undef,
23                                                 <4 x i32> <i32 0, i32 1, i32 2, i32 undef>),
24                                               <4 x float> undef,
25                                             <3 x i32> <i32 0, i32 1, i32 2>),
26                                             <3 x float> undef,
27                                             <4 x i32> <i32 0, i32 1, i32 2, i32 undef>)
28                                           to <2 x double>))
29   ret <4 x float> %call20.i
30 }
31
32 declare <4 x float> @cmp(<2 x double>, <2 x double>)