• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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> shufflevector (<vscale x 4 x i32>
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> shufflevector (<vscale x 2 x i32>
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: <vscale x 4 x i32> select (<vscale x 4 x i1>
40
41define <vscale x 4 x i32> @const_select() {
42  ret <vscale x 4 x i32> select
43    (<vscale x 4 x i1> insertelement
44      (<vscale x 4 x i1> undef,
45       i1 icmp ne (i32* @important_val, i32* null),
46       i32 0),
47     <vscale x 4 x i32> zeroinitializer,
48     <vscale x 4 x i32> insertelement (<vscale x 4 x i32> undef, i32 1, i32 0))
49}
50