1- ! RUN: %flang_fc1 -flang-experimental-hlfir - emit-llvm %s -fno-ppc-native-vector-element-order -triple ppc64le-unknown-linux -o - | FileCheck --check-prefixes="LLVMIR" %s
1+ ! RUN: %flang_fc1 -emit-llvm %s -fno-ppc-native-vector-element-order -triple ppc64le-unknown-linux -o - | FileCheck --check-prefixes="LLVMIR" %s
22! REQUIRES: target=powerpc{{.*}}
33
44!- ------------------
@@ -15,7 +15,7 @@ subroutine vec_ld_testi8(arg1, arg2, res)
1515! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i8 %[[arg1]]
1616! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
1717! LLVMIR: %[[bc:.*]] = bitcast <4 x i32> %[[ld]] to <16 x i8>
18- ! LLVMIR: %[[shflv:.*]] = shufflevector <16 x i8> %[[bc]], <16 x i8> undef , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
18+ ! LLVMIR: %[[shflv:.*]] = shufflevector <16 x i8> %[[bc]], <16 x i8> poison , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
1919! LLVMIR: store <16 x i8> %[[shflv]], ptr %2, align 16
2020end subroutine vec_ld_testi8
2121
@@ -29,7 +29,7 @@ subroutine vec_ld_testi16(arg1, arg2, res)
2929! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i16 %[[arg1]]
3030! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
3131! LLVMIR: %[[bc:.*]] = bitcast <4 x i32> %[[ld]] to <8 x i16>
32- ! LLVMIR: %[[shflv:.*]] = shufflevector <8 x i16> %[[bc]], <8 x i16> undef , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
32+ ! LLVMIR: %[[shflv:.*]] = shufflevector <8 x i16> %[[bc]], <8 x i16> poison , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
3333! LLVMIR: store <8 x i16> %[[shflv]], ptr %2, align 16
3434end subroutine vec_ld_testi16
3535
@@ -42,7 +42,7 @@ subroutine vec_ld_testi32(arg1, arg2, res)
4242! LLVMIR: %[[arg1:.*]] = load i32, ptr %0, align 4
4343! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i32 %[[arg1]]
4444! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
45- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
45+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
4646! LLVMIR: store <4 x i32> %[[shflv]], ptr %2, align 16
4747end subroutine vec_ld_testi32
4848
@@ -57,7 +57,7 @@ subroutine vec_ld_testf32(arg1, arg2, res)
5757! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i32 %[[i4]]
5858! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
5959! LLVMIR: %[[bc:.*]] = bitcast <4 x i32> %[[ld]] to <4 x float>
60- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
60+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
6161! LLVMIR: store <4 x float> %[[shflv]], ptr %2, align 16
6262end subroutine vec_ld_testf32
6363
@@ -70,7 +70,7 @@ subroutine vec_ld_testu32(arg1, arg2, res)
7070! LLVMIR: %[[arg1:.*]] = load i8, ptr %0, align 1
7171! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i8 %[[arg1]]
7272! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
73- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
73+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
7474! LLVMIR: store <4 x i32> %[[shflv]], ptr %2, align 16
7575end subroutine vec_ld_testu32
7676
@@ -84,7 +84,7 @@ subroutine vec_ld_testi32a(arg1, arg2, res)
8484! LLVMIR: %[[arg1:.*]] = load i32, ptr %0, align 4
8585! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i32 %[[arg1]]
8686! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
87- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
87+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
8888! LLVMIR: store <4 x i32> %[[shflv]], ptr %2, align 16
8989end subroutine vec_ld_testi32a
9090
@@ -100,7 +100,7 @@ subroutine vec_ld_testf32av(arg1, arg2, res)
100100! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i32 %[[i4]]
101101! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
102102! LLVMIR: %[[bc:.*]] = bitcast <4 x i32> %[[ld]] to <4 x float>
103- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
103+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
104104! LLVMIR: store <4 x float> %[[shflv]], ptr %2, align 16
105105end subroutine vec_ld_testf32av
106106
@@ -115,7 +115,7 @@ subroutine vec_ld_testi32s(arg1, arg2, res)
115115! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i32 %[[arg1]]
116116! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvx(ptr %[[addr]])
117117! LLVMIR: %[[bc:.*]] = bitcast <4 x i32> %[[ld]] to <4 x float>
118- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
118+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
119119! LLVMIR: store <4 x float> %[[shflv]], ptr %2, align 16
120120end subroutine vec_ld_testi32s
121121
@@ -133,7 +133,7 @@ subroutine vec_lde_testi8s(arg1, arg2, res)
133133! LLVMIR: %[[arg1:.*]] = load i8, ptr %0, align 1
134134! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i8 %[[arg1]]
135135! LLVMIR: %[[ld:.*]] = call <16 x i8> @llvm.ppc.altivec.lvebx(ptr %[[addr]])
136- ! LLVMIR: %[[shflv:.*]] = shufflevector <16 x i8> %[[ld]], <16 x i8> undef , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
136+ ! LLVMIR: %[[shflv:.*]] = shufflevector <16 x i8> %[[ld]], <16 x i8> poison , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
137137! LLVMIR: store <16 x i8> %[[shflv]], ptr %2, align 16
138138end subroutine vec_lde_testi8s
139139
@@ -147,7 +147,7 @@ subroutine vec_lde_testi16a(arg1, arg2, res)
147147! LLVMIR: %[[arg1:.*]] = load i16, ptr %0, align 2
148148! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i16 %[[arg1]]
149149! LLVMIR: %[[ld:.*]] = call <8 x i16> @llvm.ppc.altivec.lvehx(ptr %[[addr]])
150- ! LLVMIR: %[[shflv:.*]] = shufflevector <8 x i16> %[[ld]], <8 x i16> undef , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
150+ ! LLVMIR: %[[shflv:.*]] = shufflevector <8 x i16> %[[ld]], <8 x i16> poison , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
151151! LLVMIR: store <8 x i16> %[[shflv]], ptr %2, align 16
152152end subroutine vec_lde_testi16a
153153
@@ -161,7 +161,7 @@ subroutine vec_lde_testi32a(arg1, arg2, res)
161161! LLVMIR: %[[arg1:.*]] = load i32, ptr %0, align 4
162162! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i32 %[[arg1]]
163163! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvewx(ptr %[[addr]])
164- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
164+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x i32> %[[ld]], <4 x i32> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
165165! LLVMIR: store <4 x i32> %[[shflv]], ptr %2, align 16
166166end subroutine vec_lde_testi32a
167167
@@ -176,7 +176,7 @@ subroutine vec_lde_testf32a(arg1, arg2, res)
176176! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i64 %[[arg1]]
177177! LLVMIR: %[[ld:.*]] = call <4 x i32> @llvm.ppc.altivec.lvewx(ptr %[[addr]])
178178! LLVMIR: %[[bc:.*]] = bitcast <4 x i32> %[[ld]] to <4 x float>
179- ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
179+ ! LLVMIR: %[[shflv:.*]] = shufflevector <4 x float> %[[bc]], <4 x float> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
180180! LLVMIR: store <4 x float> %[[shflv]], ptr %2, align 16
181181end subroutine vec_lde_testf32a
182182
@@ -398,7 +398,7 @@ subroutine vec_xl_testi8a(arg1, arg2, res)
398398! LLVMIR: %[[arg1:.*]] = load i8, ptr %0, align 1
399399! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i8 %[[arg1]]
400400! LLVMIR: %[[ld:.*]] = load <16 x i8>, ptr %[[addr]], align 1
401- ! LLVMIR: %[[shflv:.*]] = shufflevector <16 x i8> %[[ld]], <16 x i8> undef , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
401+ ! LLVMIR: %[[shflv:.*]] = shufflevector <16 x i8> %[[ld]], <16 x i8> poison , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
402402! LLVMIR: store <16 x i8> %[[shflv]], ptr %2, align 16
403403end subroutine vec_xl_testi8a
404404
@@ -412,7 +412,7 @@ subroutine vec_xl_testi16a(arg1, arg2, res)
412412! LLVMIR: %[[arg1:.*]] = load i16, ptr %0, align 2
413413! LLVMIR: %[[addr:.*]] = getelementptr i8, ptr %1, i16 %[[arg1]]
414414! LLVMIR: %[[ld:.*]] = load <8 x i16>, ptr %[[addr]], align 1
415- ! LLVMIR: %[[shflv:.*]] = shufflevector <8 x i16> %[[ld]], <8 x i16> undef , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
415+ ! LLVMIR: %[[shflv:.*]] = shufflevector <8 x i16> %[[ld]], <8 x i16> poison , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
416416! LLVMIR: store <8 x i16> %[[shflv]], ptr %2, align 16
417417end subroutine vec_xl_testi16a
418418
@@ -485,7 +485,7 @@ subroutine vec_xl_be_testi8a(arg1, arg2, res)
485485! LLVMIR: %4 = load i8, ptr %0, align 1
486486! LLVMIR: %5 = getelementptr i8, ptr %1, i8 %4
487487! LLVMIR: %6 = load <16 x i8>, ptr %5, align 1
488- ! LLVMIR: %7 = shufflevector <16 x i8> %6, <16 x i8> undef , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
488+ ! LLVMIR: %7 = shufflevector <16 x i8> %6, <16 x i8> poison , <16 x i32> <i32 15, i32 14, i32 13, i32 12, i32 11, i32 10, i32 9, i32 8, i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
489489! LLVMIR: store <16 x i8> %7, ptr %2, align 16
490490end subroutine vec_xl_be_testi8a
491491
@@ -499,7 +499,7 @@ subroutine vec_xl_be_testi16a(arg1, arg2, res)
499499! LLVMIR: %4 = load i16, ptr %0, align 2
500500! LLVMIR: %5 = getelementptr i8, ptr %1, i16 %4
501501! LLVMIR: %6 = load <8 x i16>, ptr %5, align 1
502- ! LLVMIR: %7 = shufflevector <8 x i16> %6, <8 x i16> undef , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
502+ ! LLVMIR: %7 = shufflevector <8 x i16> %6, <8 x i16> poison , <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
503503! LLVMIR: store <8 x i16> %7, ptr %2, align 16
504504end subroutine vec_xl_be_testi16a
505505
@@ -513,7 +513,7 @@ subroutine vec_xl_be_testi32a(arg1, arg2, res)
513513! LLVMIR: %4 = load i32, ptr %0, align 4
514514! LLVMIR: %5 = getelementptr i8, ptr %1, i32 %4
515515! LLVMIR: %6 = load <4 x i32>, ptr %5, align 1
516- ! LLVMIR: %7 = shufflevector <4 x i32> %6, <4 x i32> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
516+ ! LLVMIR: %7 = shufflevector <4 x i32> %6, <4 x i32> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
517517! LLVMIR: store <4 x i32> %7, ptr %2, align 16
518518end subroutine vec_xl_be_testi32a
519519
@@ -527,7 +527,7 @@ subroutine vec_xl_be_testi64a(arg1, arg2, res)
527527! LLVMIR: %4 = load i64, ptr %0, align 8
528528! LLVMIR: %5 = getelementptr i8, ptr %1, i64 %4
529529! LLVMIR: %6 = load <2 x i64>, ptr %5, align 1
530- ! LLVMIR: %7 = shufflevector <2 x i64> %6, <2 x i64> undef , <2 x i32> <i32 1, i32 0>
530+ ! LLVMIR: %7 = shufflevector <2 x i64> %6, <2 x i64> poison , <2 x i32> <i32 1, i32 0>
531531! LLVMIR: store <2 x i64> %7, ptr %2, align 16
532532end subroutine vec_xl_be_testi64a
533533
@@ -541,7 +541,7 @@ subroutine vec_xl_be_testf32a(arg1, arg2, res)
541541! LLVMIR: %4 = load i16, ptr %0, align 2
542542! LLVMIR: %5 = getelementptr i8, ptr %1, i16 %4
543543! LLVMIR: %6 = load <4 x float>, ptr %5, align 1
544- ! LLVMIR: %7 = shufflevector <4 x float> %6, <4 x float> undef , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
544+ ! LLVMIR: %7 = shufflevector <4 x float> %6, <4 x float> poison , <4 x i32> <i32 3, i32 2, i32 1, i32 0>
545545! LLVMIR: store <4 x float> %7, ptr %2, align 16
546546end subroutine vec_xl_be_testf32a
547547
@@ -555,7 +555,7 @@ subroutine vec_xl_be_testf64a(arg1, arg2, res)
555555! LLVMIR: %4 = load i64, ptr %0, align 8
556556! LLVMIR: %5 = getelementptr i8, ptr %1, i64 %4
557557! LLVMIR: %6 = load <2 x double>, ptr %5, align 1
558- ! LLVMIR: %7 = shufflevector <2 x double> %6, <2 x double> undef , <2 x i32> <i32 1, i32 0>
558+ ! LLVMIR: %7 = shufflevector <2 x double> %6, <2 x double> poison , <2 x i32> <i32 1, i32 0>
559559! LLVMIR: store <2 x double> %7, ptr %2, align 16
560560end subroutine vec_xl_be_testf64a
561561
0 commit comments