| ; 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 |
| } |
| |