; RUN: llc -march=hexagon < %s | FileCheck %s ; CHECK-LABEL: test_0000 ; CHECK-NOT: valign define <128 x i8> @test_0000(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0001 ; CHECK: valign(v1,v0,#1) define <128 x i8> @test_0001(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0002 ; CHECK: valign(v1,v0,#2) define <128 x i8> @test_0002(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0003 ; CHECK: valign(v1,v0,#3) define <128 x i8> @test_0003(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0004 ; CHECK: valign(v1,v0,#4) define <128 x i8> @test_0004(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0005 ; CHECK: valign(v1,v0,#5) define <128 x i8> @test_0005(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0006 ; CHECK: valign(v1,v0,#6) define <128 x i8> @test_0006(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0007 ; CHECK: valign(v1,v0,#7) define <128 x i8> @test_0007(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0008 ; CHECK: [[R0008:r[0-9]+]] = #8 ; CHECK: valign(v1,v0,[[R0008]]) define <128 x i8> @test_0008(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0009 ; CHECK: [[R0009:r[0-9]+]] = #9 ; CHECK: valign(v1,v0,[[R0009]]) define <128 x i8> @test_0009(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_000a ; CHECK: [[R000a:r[0-9]+]] = #10 ; CHECK: valign(v1,v0,[[R000a]]) define <128 x i8> @test_000a(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_000b ; CHECK: [[R000b:r[0-9]+]] = #11 ; CHECK: valign(v1,v0,[[R000b]]) define <128 x i8> @test_000b(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_000c ; CHECK: [[R000c:r[0-9]+]] = #12 ; CHECK: valign(v1,v0,[[R000c]]) define <128 x i8> @test_000c(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_000d ; CHECK: [[R000d:r[0-9]+]] = #13 ; CHECK: valign(v1,v0,[[R000d]]) define <128 x i8> @test_000d(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_000e ; CHECK: [[R000e:r[0-9]+]] = #14 ; CHECK: valign(v1,v0,[[R000e]]) define <128 x i8> @test_000e(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_000f ; CHECK: [[R000f:r[0-9]+]] = #15 ; CHECK: valign(v1,v0,[[R000f]]) define <128 x i8> @test_000f(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0010 ; CHECK: [[R0010:r[0-9]+]] = #16 ; CHECK: valign(v1,v0,[[R0010]]) define <128 x i8> @test_0010(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0011 ; CHECK: [[R0011:r[0-9]+]] = #17 ; CHECK: valign(v1,v0,[[R0011]]) define <128 x i8> @test_0011(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0012 ; CHECK: [[R0012:r[0-9]+]] = #18 ; CHECK: valign(v1,v0,[[R0012]]) define <128 x i8> @test_0012(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0013 ; CHECK: [[R0013:r[0-9]+]] = #19 ; CHECK: valign(v1,v0,[[R0013]]) define <128 x i8> @test_0013(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0014 ; CHECK: [[R0014:r[0-9]+]] = #20 ; CHECK: valign(v1,v0,[[R0014]]) define <128 x i8> @test_0014(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0015 ; CHECK: [[R0015:r[0-9]+]] = #21 ; CHECK: valign(v1,v0,[[R0015]]) define <128 x i8> @test_0015(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0016 ; CHECK: [[R0016:r[0-9]+]] = #22 ; CHECK: valign(v1,v0,[[R0016]]) define <128 x i8> @test_0016(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0017 ; CHECK: [[R0017:r[0-9]+]] = #23 ; CHECK: valign(v1,v0,[[R0017]]) define <128 x i8> @test_0017(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0018 ; CHECK: [[R0018:r[0-9]+]] = #24 ; CHECK: valign(v1,v0,[[R0018]]) define <128 x i8> @test_0018(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0019 ; CHECK: [[R0019:r[0-9]+]] = #25 ; CHECK: valign(v1,v0,[[R0019]]) define <128 x i8> @test_0019(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_001a ; CHECK: [[R001a:r[0-9]+]] = #26 ; CHECK: valign(v1,v0,[[R001a]]) define <128 x i8> @test_001a(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_001b ; CHECK: [[R001b:r[0-9]+]] = #27 ; CHECK: valign(v1,v0,[[R001b]]) define <128 x i8> @test_001b(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_001c ; CHECK: [[R001c:r[0-9]+]] = #28 ; CHECK: valign(v1,v0,[[R001c]]) define <128 x i8> @test_001c(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_001d ; CHECK: [[R001d:r[0-9]+]] = #29 ; CHECK: valign(v1,v0,[[R001d]]) define <128 x i8> @test_001d(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_001e ; CHECK: [[R001e:r[0-9]+]] = #30 ; CHECK: valign(v1,v0,[[R001e]]) define <128 x i8> @test_001e(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_001f ; CHECK: [[R001f:r[0-9]+]] = #31 ; CHECK: valign(v1,v0,[[R001f]]) define <128 x i8> @test_001f(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0020 ; CHECK: [[R0020:r[0-9]+]] = #32 ; CHECK: valign(v1,v0,[[R0020]]) define <128 x i8> @test_0020(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0021 ; CHECK: [[R0021:r[0-9]+]] = #33 ; CHECK: valign(v1,v0,[[R0021]]) define <128 x i8> @test_0021(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0022 ; CHECK: [[R0022:r[0-9]+]] = #34 ; CHECK: valign(v1,v0,[[R0022]]) define <128 x i8> @test_0022(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0023 ; CHECK: [[R0023:r[0-9]+]] = #35 ; CHECK: valign(v1,v0,[[R0023]]) define <128 x i8> @test_0023(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0024 ; CHECK: [[R0024:r[0-9]+]] = #36 ; CHECK: valign(v1,v0,[[R0024]]) define <128 x i8> @test_0024(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0025 ; CHECK: [[R0025:r[0-9]+]] = #37 ; CHECK: valign(v1,v0,[[R0025]]) define <128 x i8> @test_0025(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0026 ; CHECK: [[R0026:r[0-9]+]] = #38 ; CHECK: valign(v1,v0,[[R0026]]) define <128 x i8> @test_0026(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0027 ; CHECK: [[R0027:r[0-9]+]] = #39 ; CHECK: valign(v1,v0,[[R0027]]) define <128 x i8> @test_0027(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0028 ; CHECK: [[R0028:r[0-9]+]] = #40 ; CHECK: valign(v1,v0,[[R0028]]) define <128 x i8> @test_0028(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0029 ; CHECK: [[R0029:r[0-9]+]] = #41 ; CHECK: valign(v1,v0,[[R0029]]) define <128 x i8> @test_0029(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_002a ; CHECK: [[R002a:r[0-9]+]] = #42 ; CHECK: valign(v1,v0,[[R002a]]) define <128 x i8> @test_002a(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_002b ; CHECK: [[R002b:r[0-9]+]] = #43 ; CHECK: valign(v1,v0,[[R002b]]) define <128 x i8> @test_002b(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_002c ; CHECK: [[R002c:r[0-9]+]] = #44 ; CHECK: valign(v1,v0,[[R002c]]) define <128 x i8> @test_002c(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_002d ; CHECK: [[R002d:r[0-9]+]] = #45 ; CHECK: valign(v1,v0,[[R002d]]) define <128 x i8> @test_002d(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_002e ; CHECK: [[R002e:r[0-9]+]] = #46 ; CHECK: valign(v1,v0,[[R002e]]) define <128 x i8> @test_002e(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_002f ; CHECK: [[R002f:r[0-9]+]] = #47 ; CHECK: valign(v1,v0,[[R002f]]) define <128 x i8> @test_002f(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0030 ; CHECK: [[R0030:r[0-9]+]] = #48 ; CHECK: valign(v1,v0,[[R0030]]) define <128 x i8> @test_0030(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0031 ; CHECK: [[R0031:r[0-9]+]] = #49 ; CHECK: valign(v1,v0,[[R0031]]) define <128 x i8> @test_0031(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0032 ; CHECK: [[R0032:r[0-9]+]] = #50 ; CHECK: valign(v1,v0,[[R0032]]) define <128 x i8> @test_0032(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0033 ; CHECK: [[R0033:r[0-9]+]] = #51 ; CHECK: valign(v1,v0,[[R0033]]) define <128 x i8> @test_0033(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0034 ; CHECK: [[R0034:r[0-9]+]] = #52 ; CHECK: valign(v1,v0,[[R0034]]) define <128 x i8> @test_0034(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0035 ; CHECK: [[R0035:r[0-9]+]] = #53 ; CHECK: valign(v1,v0,[[R0035]]) define <128 x i8> @test_0035(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0036 ; CHECK: [[R0036:r[0-9]+]] = #54 ; CHECK: valign(v1,v0,[[R0036]]) define <128 x i8> @test_0036(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0037 ; CHECK: [[R0037:r[0-9]+]] = #55 ; CHECK: valign(v1,v0,[[R0037]]) define <128 x i8> @test_0037(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0038 ; CHECK: [[R0038:r[0-9]+]] = #56 ; CHECK: valign(v1,v0,[[R0038]]) define <128 x i8> @test_0038(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_0039 ; CHECK: vlalign(v1,v0,#7) define <128 x i8> @test_0039(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_003a ; CHECK: vlalign(v1,v0,#6) define <128 x i8> @test_003a(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_003b ; CHECK: vlalign(v1,v0,#5) define <128 x i8> @test_003b(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_003c ; CHECK: vlalign(v1,v0,#4) define <128 x i8> @test_003c(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_003d ; CHECK: vlalign(v1,v0,#3) define <128 x i8> @test_003d(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_003e ; CHECK: vlalign(v1,v0,#2) define <128 x i8> @test_003e(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } ; CHECK-LABEL: test_003f ; CHECK: vlalign(v1,v0,#1) define <128 x i8> @test_003f(<128 x i8> %v0) #0 { %p = shufflevector <128 x i8> %v0, <128 x i8> undef, <128 x i32> ret <128 x i8> %p } attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvx,+hvx-length64b" }