| ; 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: <vscale x 4 x i32> select (<vscale x 4 x i1> |
| |
| define <vscale x 4 x i32> @const_select() { |
| ret <vscale x 4 x i32> 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)) |
| } |