xref: /llvm-project/llvm/test/Bitcode/vscale-round-trip.ll (revision deab451e7a7f2dff42097049274637052c87eabd)
1; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2
3target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
4target triple = "aarch64"
5
6@important_val = extern_weak dso_local global i32, align 4
7
8; CHECK-LABEL: define <vscale x 4 x i32> @const_shufflevector(
9; CHECK: <vscale x 4 x i32> zeroinitializer
10
11define <vscale x 4 x i32> @const_shufflevector() {
12  ret <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> zeroinitializer,
13                                        <vscale x 4 x i32> undef,
14                                        <vscale x 4 x i32> zeroinitializer)
15}
16
17; CHECK-LABEL: define <vscale x 4 x i32> @const_shufflevector_ex()
18; CHECK: <vscale x 4 x i32> zeroinitializer
19
20define <vscale x 4 x i32> @const_shufflevector_ex() {
21  ret <vscale x 4 x i32> shufflevector (<vscale x 2 x i32> zeroinitializer,
22                                        <vscale x 2 x i32> undef,
23                                        <vscale x 4 x i32> zeroinitializer)
24}
25
26; CHECK-LABEL: define <vscale x 4 x i32> @non_const_shufflevector(
27; CHECK: %res = shufflevector <vscale x 4 x i32>
28
29define <vscale x 4 x i32> @non_const_shufflevector(<vscale x 4 x i32> %lhs,
30                                                   <vscale x 4 x i32> %rhs) {
31  %res = shufflevector <vscale x 4 x i32> %lhs,
32                       <vscale x 4 x i32> %rhs,
33                       <vscale x 4 x i32> zeroinitializer
34
35  ret <vscale x 4 x i32> %res
36}
37
38; CHECK-LABEL: define <vscale x 4 x i32> @const_select()
39; CHECK: select <vscale x 4 x i1>
40
41define <vscale x 4 x i32> @const_select() {
42  %s = select <vscale x 4 x i1> insertelement
43      (<vscale x 4 x i1> undef, i1 true, i32 0),
44     <vscale x 4 x i32> zeroinitializer,
45     <vscale x 4 x i32> insertelement (<vscale x 4 x i32> undef, i32 1, i32 0)
46  ret <vscale x 4 x i32> %s
47}
48