brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · 7dc7ea9 Raw
82 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt < %s -passes=sccp -S | FileCheck %s3 4define i1 @vscale_i32_noattr() {5; CHECK-LABEL: define i1 @vscale_i32_noattr() {6; CHECK-NEXT:    [[SCALE:%.*]] = call i32 @llvm.vscale.i32()7; CHECK-NEXT:    [[CMP2:%.*]] = icmp ule i32 [[SCALE]], 168; CHECK-NEXT:    [[RES:%.*]] = and i1 true, [[CMP2]]9; CHECK-NEXT:    ret i1 [[RES]]10;11  %scale = call i32 @llvm.vscale.i32()12  %cmp1 = icmp uge i32 %scale, 113  %cmp2 = icmp ule i32 %scale, 1614  %res = and i1 %cmp1, %cmp215  ret i1 %res16}17 18define i1 @vscale_i32_attr() vscale_range(1, 16) {19; CHECK-LABEL: define i1 @vscale_i32_attr(20; CHECK-SAME: ) #[[ATTR0:[0-9]+]] {21; CHECK-NEXT:    [[SCALE:%.*]] = call i32 @llvm.vscale.i32()22; CHECK-NEXT:    ret i1 true23;24  %scale = call i32 @llvm.vscale.i32()25  %cmp1 = icmp uge i32 %scale, 126  %cmp2 = icmp ule i32 %scale, 1627  %res = and i1 %cmp1, %cmp228  ret i1 %res29}30 31define i1 @vscale_i64_noattr() {32; CHECK-LABEL: define i1 @vscale_i64_noattr() {33; CHECK-NEXT:    [[SCALE:%.*]] = call i64 @llvm.vscale.i64()34; CHECK-NEXT:    [[CMP2:%.*]] = icmp ule i64 [[SCALE]], 1635; CHECK-NEXT:    [[RES:%.*]] = and i1 true, [[CMP2]]36; CHECK-NEXT:    ret i1 [[RES]]37;38  %scale = call i64 @llvm.vscale.i64()39  %cmp1 = icmp uge i64 %scale, 140  %cmp2 = icmp ule i64 %scale, 1641  %res = and i1 %cmp1, %cmp242  ret i1 %res43}44 45define i1 @vscale_i64_attr() vscale_range(1, 16) {46; CHECK-LABEL: define i1 @vscale_i64_attr(47; CHECK-SAME: ) #[[ATTR0]] {48; CHECK-NEXT:    [[SCALE:%.*]] = call i64 @llvm.vscale.i64()49; CHECK-NEXT:    ret i1 true50;51  %scale = call i64 @llvm.vscale.i64()52  %cmp1 = icmp uge i64 %scale, 153  %cmp2 = icmp ule i64 %scale, 1654  %res = and i1 %cmp1, %cmp255  ret i1 %res56}57 58define i32 @vscale_branch_elim(i32 %x) vscale_range(1, 16) {59; CHECK-LABEL: define i32 @vscale_branch_elim(60; CHECK-SAME: i32 [[X:%.*]]) #[[ATTR0]] {61; CHECK-NEXT:  [[ENTRY:.*:]]62; CHECK-NEXT:    [[SCALE:%.*]] = call i32 @llvm.vscale.i32()63; CHECK-NEXT:    [[BOUND:%.*]] = shl nuw nsw i32 [[SCALE]], 364; CHECK-NEXT:    br label %[[IF_END:.*]]65; CHECK:       [[IF_END]]:66; CHECK-NEXT:    ret i32 [[X]]67;68entry:69  %scale = call i32 @llvm.vscale.i32()70  %bound = shl nsw nuw i32 %scale, 371  %cmp = icmp uge i32 1, %bound72  br i1 %cmp, label %if.then, label %if.end73 74if.then:75  %double = mul i32 %x, 276  br label %if.end77 78if.end:79  %res = phi i32 [ %x, %entry ], [ %double, %if.then]80  ret i32 %res81}82