| ; RUN: llvm-as < %s | llvm-dis | FileCheck %s | 
 |  | 
 | target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" | 
 | target triple = "aarch64" | 
 |  | 
 | @important_val = extern_weak dso_local global i32, align 4 | 
 |  | 
 | ; CHECK-LABEL: define <vscale x 4 x i32> @const_shufflevector( | 
 | ; CHECK: <vscale x 4 x i32> zeroinitializer | 
 |  | 
 | define <vscale x 4 x i32> @const_shufflevector() { | 
 |   ret <vscale x 4 x i32> shufflevector (<vscale x 4 x i32> zeroinitializer, | 
 |                                         <vscale x 4 x i32> undef, | 
 |                                         <vscale x 4 x i32> zeroinitializer) | 
 | } | 
 |  | 
 | ; CHECK-LABEL: define <vscale x 4 x i32> @const_shufflevector_ex() | 
 | ; CHECK: <vscale x 4 x i32> zeroinitializer | 
 |  | 
 | define <vscale x 4 x i32> @const_shufflevector_ex() { | 
 |   ret <vscale x 4 x i32> shufflevector (<vscale x 2 x i32> zeroinitializer, | 
 |                                         <vscale x 2 x i32> undef, | 
 |                                         <vscale x 4 x i32> zeroinitializer) | 
 | } | 
 |  | 
 | ; CHECK-LABEL: define <vscale x 4 x i32> @non_const_shufflevector( | 
 | ; CHECK: %res = shufflevector <vscale x 4 x i32> | 
 |  | 
 | define <vscale x 4 x i32> @non_const_shufflevector(<vscale x 4 x i32> %lhs, | 
 |                                                    <vscale x 4 x i32> %rhs) { | 
 |   %res = shufflevector <vscale x 4 x i32> %lhs, | 
 |                        <vscale x 4 x i32> %rhs, | 
 |                        <vscale x 4 x i32> zeroinitializer | 
 |  | 
 |   ret <vscale x 4 x i32> %res | 
 | } | 
 |  | 
 | ; CHECK-LABEL: define <vscale x 4 x i32> @const_select() | 
 | ; CHECK: select <vscale x 4 x i1> | 
 |  | 
 | define <vscale x 4 x i32> @const_select() { | 
 |   %s = select <vscale x 4 x i1> insertelement | 
 |       (<vscale x 4 x i1> undef, | 
 |        i1 icmp ne (i32* @important_val, i32* null), | 
 |        i32 0), | 
 |      <vscale x 4 x i32> zeroinitializer, | 
 |      <vscale x 4 x i32> insertelement (<vscale x 4 x i32> undef, i32 1, i32 0) | 
 |   ret <vscale x 4 x i32> %s | 
 | } |