Skip to content

Commit 7328b74

Browse files
authored
[flang] Handle ub.poison in lowering (#192454)
This patch is to add the UB dialect registration and UBToLLVM conversion interface in lowering.
1 parent 9e45a7a commit 7328b74

7 files changed

Lines changed: 56 additions & 52 deletions

File tree

flang/lib/Optimizer/CodeGen/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,5 +48,7 @@ add_flang_library(FIRCodeGen
4848
MLIRBuiltinToLLVMIRTranslation
4949
MLIRLLVMToLLVMIRTranslation
5050
MLIRTargetLLVMIRExport
51+
MLIRUBDialect
52+
MLIRUBToLLVM
5153
MLIRVectorToLLVM
5254
)

flang/lib/Optimizer/CodeGen/CodeGen.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
#include "mlir/Conversion/MathToNVVM/MathToNVVM.h"
4848
#include "mlir/Conversion/MathToROCDL/MathToROCDL.h"
4949
#include "mlir/Conversion/OpenMPToLLVM/ConvertOpenMPToLLVM.h"
50+
#include "mlir/Conversion/UBToLLVM/UBToLLVM.h"
5051
#include "mlir/Conversion/VectorToLLVM/ConvertVectorToLLVM.h"
5152
#include "mlir/Dialect/Arith/IR/Arith.h"
5253
#include "mlir/Dialect/DLTI/DLTI.h"
@@ -4677,6 +4678,7 @@ class FIRToLLVMLowering
46774678
mlir::populateComplexToLLVMConversionPatterns(typeConverter, pattern);
46784679
mlir::index::populateIndexToLLVMConversionPatterns(typeConverter, pattern);
46794680
mlir::populateVectorToLLVMConversionPatterns(typeConverter, pattern);
4681+
mlir::ub::populateUBToLLVMConversionPatterns(typeConverter, pattern);
46804682

46814683
// Flang specific overloads for OpenMP operations, to allow for special
46824684
// handling of things like Box types.

flang/test/Lower/PowerPC/ppc-vec-convert.f90

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR","LLVMIR-LE" %s
2-
! RUN: %flang_fc1 -flang-experimental-hlfir -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR","LLVMIR-BE" %s
1+
! RUN: %flang_fc1 -triple powerpc64le-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR","LLVMIR-LE" %s
2+
! RUN: %flang_fc1 -triple powerpc64-unknown-unknown -emit-llvm %s -o - | FileCheck --check-prefixes="LLVMIR","LLVMIR-BE" %s
33
! REQUIRES: target=powerpc{{.*}}
44

55
!---------
@@ -1318,7 +1318,7 @@ subroutine vec_cvf_test_r4r8(arg1)
13181318
! LLVMIR: %[[arg:.*]] = load <2 x double>, ptr %{{.*}}, align 16
13191319
! LLVMIR: %[[call:.*]] = call contract <4 x float> @llvm.ppc.vsx.xvcvdpsp(<2 x double> %[[arg]])
13201320
! LLVMIR-LE: %[[b:.*]] = bitcast <4 x float> %[[call]] to <16 x i8>
1321-
! LLVMIR-LE: %[[sh:.*]] = shufflevector <16 x i8> %[[b]], <16 x i8> %[[b]], <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11>
1321+
! LLVMIR-LE: %[[sh:.*]] = shufflevector <16 x i8> %[[b]], <16 x i8> poison, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11>
13221322
! LLVMIR-LE: %[[r:.*]] = bitcast <16 x i8> %[[sh]] to <4 x float>
13231323
! LLVMIR-LE: store <4 x float> %[[r]], ptr %{{.*}}, align 16
13241324
! LLVMIR-BE: store <4 x float> %[[call]], ptr %{{.*}}, align 16
@@ -1332,7 +1332,7 @@ subroutine vec_cvf_test_r8r4(arg1)
13321332

13331333
! LLVMIR: %[[arg:.*]] = load <4 x float>, ptr %{{.*}}, align 16
13341334
! LLVMIR-LE: %[[bfi:.*]] = bitcast <4 x float> %[[arg]] to <16 x i8>
1335-
! LLVMIR-LE: %[[sh:.*]] = shufflevector <16 x i8> %[[bfi]], <16 x i8> %[[bfi]], <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11>
1335+
! LLVMIR-LE: %[[sh:.*]] = shufflevector <16 x i8> %[[bfi]], <16 x i8> poison, <16 x i32> <i32 4, i32 5, i32 6, i32 7, i32 0, i32 1, i32 2, i32 3, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11>
13361336
! LLVMIR-LE: %[[bif:.*]] = bitcast <16 x i8> %[[sh]] to <4 x float>
13371337
! LLVMIR-LE: %[[r:.*]] = call contract <2 x double> @llvm.ppc.vsx.xvcvspdp(<4 x float> %[[bif]])
13381338
! LLVMIR-LE: store <2 x double> %[[r]], ptr %{{.*}}, align 16

flang/test/Lower/PowerPC/ppc-vec-load-elem-order.f90

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
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
2020
end 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
3434
end 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
4747
end 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
6262
end 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
7575
end 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
8989
end 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
105105
end 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
120120
end 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
138138
end 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
152152
end 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
166166
end 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
181181
end 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
403403
end 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
417417
end 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
490490
end 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
504504
end 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
518518
end 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
532532
end 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
546546
end 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
560560
end subroutine vec_xl_be_testf64a
561561

0 commit comments

Comments
 (0)