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

This reverts commit 8d5f64c4edbc190a5a8790157fa1d99cfac34016.

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 0a08f60d7f
commit 38fc834d2c
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)