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