xref: /aosp_15_r20/external/llvm/test/Bitcode/shuffle.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llvm-as < %s | llvm-dis -disable-output
2*9880d681SAndroid Build Coastguard Worker; RUN: verify-uselistorder < %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Worker; <rdar://problem/8622574>
5*9880d681SAndroid Build Coastguard Worker; tests the bitcodereader can handle the case where the reader will initially
6*9880d681SAndroid Build Coastguard Worker; create shuffle with a place holder mask.
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Worker
9*9880d681SAndroid Build Coastguard Workerdefine <4 x float> @test(<2 x double> %d2)  {
10*9880d681SAndroid Build Coastguard Workerentry:
11*9880d681SAndroid Build Coastguard Worker  %call20.i = tail call <4 x float> @cmp(<2 x double> %d2,
12*9880d681SAndroid Build Coastguard Worker                                        <2 x double> bitcast (
13*9880d681SAndroid Build Coastguard Worker                                          <4 x float> shufflevector (
14*9880d681SAndroid Build Coastguard Worker                                            <3 x float> shufflevector (
15*9880d681SAndroid Build Coastguard Worker                                              <4 x float> shufflevector (
16*9880d681SAndroid Build Coastguard Worker                                                <3 x float> bitcast (
17*9880d681SAndroid Build Coastguard Worker                                                  i96 trunc (
18*9880d681SAndroid Build Coastguard Worker                                                    i128 bitcast (<2 x double> bitcast (
19*9880d681SAndroid Build Coastguard Worker                                                      <4 x i32> <i32 0, i32 0, i32 0, i32 undef> to <2 x double>)
20*9880d681SAndroid Build Coastguard Worker                                                    to i128) to i96)
21*9880d681SAndroid Build Coastguard Worker                                                  to <3 x float>),
22*9880d681SAndroid Build Coastguard Worker                                                <3 x float> undef,
23*9880d681SAndroid Build Coastguard Worker                                                <4 x i32> <i32 0, i32 1, i32 2, i32 undef>),
24*9880d681SAndroid Build Coastguard Worker                                              <4 x float> undef,
25*9880d681SAndroid Build Coastguard Worker                                            <3 x i32> <i32 0, i32 1, i32 2>),
26*9880d681SAndroid Build Coastguard Worker                                            <3 x float> undef,
27*9880d681SAndroid Build Coastguard Worker                                            <4 x i32> <i32 0, i32 1, i32 2, i32 undef>)
28*9880d681SAndroid Build Coastguard Worker                                          to <2 x double>))
29*9880d681SAndroid Build Coastguard Worker  ret <4 x float> %call20.i
30*9880d681SAndroid Build Coastguard Worker}
31*9880d681SAndroid Build Coastguard Worker
32*9880d681SAndroid Build Coastguard Workerdeclare <4 x float> @cmp(<2 x double>, <2 x double>)
33