blob: 180012a4e8211cda2e3f9bf9f0b98048ed452055 [file]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 5
; RUN: opt < %s -passes=instsimplify,verify -S | FileCheck %s
define <4 x i1> @foo_v4i1(i32 %a) {
; CHECK-LABEL: define <4 x i1> @foo_v4i1(
; CHECK-SAME: i32 [[A:%.*]]) {
; CHECK-NEXT: ret <4 x i1> zeroinitializer
;
%mask = call <4 x i1> @llvm.get.active.lane.mask.v4i1(i32 %a, i32 0)
ret <4 x i1> %mask
}
define <vscale x 8 x i1> @foo_nxv8i1(i32 %a) {
; CHECK-LABEL: define <vscale x 8 x i1> @foo_nxv8i1(
; CHECK-SAME: i32 [[A:%.*]]) {
; CHECK-NEXT: ret <vscale x 8 x i1> zeroinitializer
;
%mask = call <vscale x 8 x i1> @llvm.get.active.lane.mask.nxv8i1(i32 %a, i32 0)
ret <vscale x 8 x i1> %mask
}
define <vscale x 16 x i1> @foo_vscale_max_255() vscale_range(1,16) {
; CHECK-LABEL: define <vscale x 16 x i1> @foo_vscale_max_255(
; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {
; CHECK-NEXT: [[MASK:%.*]] = call <vscale x 16 x i1> @llvm.get.active.lane.mask.nxv16i1.i32(i32 0, i32 255)
; CHECK-NEXT: ret <vscale x 16 x i1> [[MASK]]
;
%mask = call <vscale x 16 x i1> @llvm.get.active.lane.mask.nxv16i1(i32 0, i32 255)
ret <vscale x 16 x i1> %mask
}
define <vscale x 16 x i1> @foo_vscale_max_256() vscale_range(1,16) {
; CHECK-LABEL: define <vscale x 16 x i1> @foo_vscale_max_256(
; CHECK-SAME: ) #[[ATTR0]] {
; CHECK-NEXT: ret <vscale x 16 x i1> splat (i1 true)
;
%mask = call <vscale x 16 x i1> @llvm.get.active.lane.mask.nxv16i1(i32 0, i32 256)
ret <vscale x 16 x i1> %mask
}
define <vscale x 2 x i1> @foo_vscale_max_nxv2i1_1_1_2() vscale_range(1,1) {
; CHECK-LABEL: define <vscale x 2 x i1> @foo_vscale_max_nxv2i1_1_1_2(
; CHECK-SAME: ) #[[ATTR1:[0-9]+]] {
; CHECK-NEXT: ret <vscale x 2 x i1> splat (i1 true)
;
%mask = call <vscale x 2 x i1> @llvm.get.active.lane.mask.nxv2i1(i32 0, i32 2)
ret <vscale x 2 x i1> %mask
}
define <vscale x 4 x i1> @foo_vscale_max_nxv4i1_2_4_16() vscale_range(2,4) {
; CHECK-LABEL: define <vscale x 4 x i1> @foo_vscale_max_nxv4i1_2_4_16(
; CHECK-SAME: ) #[[ATTR2:[0-9]+]] {
; CHECK-NEXT: ret <vscale x 4 x i1> splat (i1 true)
;
%mask = call <vscale x 4 x i1> @llvm.get.active.lane.mask.nxv4i1(i128 0, i128 16)
ret <vscale x 4 x i1> %mask
}
define <vscale x 4 x i1> @foo_vscale_max_nxv4i1_2_4_1_16() vscale_range(2,4) {
; CHECK-LABEL: define <vscale x 4 x i1> @foo_vscale_max_nxv4i1_2_4_1_16(
; CHECK-SAME: ) #[[ATTR2]] {
; CHECK-NEXT: [[MASK:%.*]] = call <vscale x 4 x i1> @llvm.get.active.lane.mask.nxv4i1.i128(i128 1, i128 16)
; CHECK-NEXT: ret <vscale x 4 x i1> [[MASK]]
;
%mask = call <vscale x 4 x i1> @llvm.get.active.lane.mask.nxv4i1(i128 1, i128 16)
ret <vscale x 4 x i1> %mask
}