Revert "[Verifier] Additional check for intrinsic get.active.lane.mask"

This reverts commit 8d5f64c4ed.

Thanks to Eli Friedma for pointing out that this check is not appropiate here,
this check will be moved to the Lint pass.
This commit is contained in:
Sjoerd Meijer 2020-08-27 08:59:27 +01:00
parent 4e9d207117
commit 1d8af682ef
2 changed files with 8 additions and 36 deletions

View File

@ -4841,9 +4841,6 @@ void Verifier::visitIntrinsicCall(Intrinsic::ID ID, CallBase &Call) {
auto *ElemTy = Call.getType()->getScalarType();
Assert(ElemTy->isIntegerTy(1), "get_active_lane_mask: element type is not "
"i1", Call);
if (auto *TripCount = dyn_cast<ConstantInt>(Call.getArgOperand(1)))
Assert(!TripCount->isZero(), "get_active_lane_mask: operand #2 "
"must be greater than 0", Call);
break;
}
case Intrinsic::masked_load: {

View File

@ -1,46 +1,21 @@
; RUN: not llvm-as < %s -o /dev/null 2>&1 | FileCheck %s
declare <4 x i32> @llvm.get.active.lane.mask.v4i32.i32(i32, i32)
define <4 x i32> @t1(i32 %IV, i32 %TC) {
define <4 x i32> @t1(i32 %IV, i32 %BTC) {
; CHECK: get_active_lane_mask: element type is not i1
; CHECK-NEXT: %res = call <4 x i32> @llvm.get.active.lane.mask.v4i32.i32(i32 %IV, i32 %TC)
; CHECK-NEXT: %res = call <4 x i32> @llvm.get.active.lane.mask.v4i32.i32(i32 %IV, i32 %BTC)
%res = call <4 x i32> @llvm.get.active.lane.mask.v4i32.i32(i32 %IV, i32 %TC)
%res = call <4 x i32> @llvm.get.active.lane.mask.v4i32.i32(i32 %IV, i32 %BTC)
ret <4 x i32> %res
}
define i32 @t2(i32 %IV, i32 %TC) {
declare i32 @llvm.get.active.lane.mask.i32.i32(i32, i32)
define i32 @t2(i32 %IV, i32 %BTC) {
; CHECK: Intrinsic has incorrect return type!
; CHECK-NEXT: i32 (i32, i32)* @llvm.get.active.lane.mask.i32.i32
%res = call i32 @llvm.get.active.lane.mask.i32.i32(i32 %IV, i32 %TC)
%res = call i32 @llvm.get.active.lane.mask.i32.i32(i32 %IV, i32 %BTC)
ret i32 %res
}
define <4 x i1> @t3(i32 %IV) {
; CHECK: get_active_lane_mask: operand #2 must be greater than 0
; CHECK-NEXT: %res = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %IV, i32 0)
%res = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %IV, i32 0)
ret <4 x i1> %res
}
define <4 x i1> @t4(i32 %IV) {
; CHECK-NOT: get_active_lane_mask
; CHECK-NOT: call <4 x i1> @llvm.get.active.lane.mask
%res = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %IV, i32 1)
ret <4 x i1> %res
}
define <4 x i1> @t5(i32 %IV) {
; CHECK-NOT: get_active_lane_mask
; CHECK-NOT: call <4 x i1> @llvm.get.active.lane.mask
%res = call <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32 %IV, i32 -1)
ret <4 x i1> %res
}
declare <4 x i32> @llvm.get.active.lane.mask.v4i32.i32(i32, i32)
declare i32 @llvm.get.active.lane.mask.i32.i32(i32, i32)
declare <4 x i1> @llvm.get.active.lane.mask.v4i1.i32(i32, i32)