brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.6 KiB · a13e904 Raw
194 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt -passes=instcombine -S < %s | FileCheck %s3 4define i1 @ugt_vscale64_x_32() vscale_range(1,16) {5; CHECK-LABEL: @ugt_vscale64_x_32(6; CHECK-NEXT:  entry:7; CHECK-NEXT:    ret i1 false8;9entry:10  %vscale = call i64 @llvm.vscale.i64()11  %num_els = shl i64 %vscale, 512  %res = icmp ugt i64 %num_els, 102413  ret i1 %res14}15 16define i1 @ugt_vscale64_x_31() vscale_range(1,16) {17; CHECK-LABEL: @ugt_vscale64_x_31(18; CHECK-NEXT:  entry:19; CHECK-NEXT:    ret i1 false20;21entry:22  %vscale = call i64 @llvm.vscale.i64()23  %num_els = mul i64 %vscale, 3124  %res = icmp ugt i64 %num_els, 102425  ret i1 %res26}27 28define i1 @ugt_vscale16_x_32() vscale_range(1,16) {29; CHECK-LABEL: @ugt_vscale16_x_32(30; CHECK-NEXT:  entry:31; CHECK-NEXT:    ret i1 false32;33entry:34  %vscale = call i16 @llvm.vscale.i16()35  %num_els = shl i16 %vscale, 536  %res = icmp ugt i16 %num_els, 102437  ret i1 %res38}39 40define i1 @ult_vscale16() vscale_range(1,16) {41; CHECK-LABEL: @ult_vscale16(42; CHECK-NEXT:  entry:43; CHECK-NEXT:    ret i1 false44;45entry:46  %vscale = call i16 @llvm.vscale.i16()47  %res = icmp ult i16 1024, %vscale48  ret i1 %res49}50 51define i1 @ule_vscale64() vscale_range(1,16) {52; CHECK-LABEL: @ule_vscale64(53; CHECK-NEXT:  entry:54; CHECK-NEXT:    ret i1 false55;56entry:57  %vscale = call i64 @llvm.vscale.i64()58  %res = icmp ule i64 1024, %vscale59  ret i1 %res60}61 62define i1 @ueq_vscale64_range4_4() vscale_range(4,4) {63; CHECK-LABEL: @ueq_vscale64_range4_4(64; CHECK-NEXT:  entry:65; CHECK-NEXT:    ret i1 true66;67entry:68  %vscale = call i64 @llvm.vscale.i64()69  %res = icmp eq i64 %vscale, 470  ret i1 %res71}72 73define i1 @ne_vscale64_x_32() vscale_range(1,16) {74; CHECK-LABEL: @ne_vscale64_x_32(75; CHECK-NEXT:  entry:76; CHECK-NEXT:    ret i1 true77;78entry:79  %vscale = call i64 @llvm.vscale.i64()80  %num_els = mul i64 %vscale, 3281  %res = icmp ne i64 %num_els, 3948882  ret i1 %res83}84 85define i1 @vscale_ule_max() vscale_range(4,8) {86; CHECK-LABEL: @vscale_ule_max(87; CHECK-NEXT:    ret i1 true88;89  %vscale = call i16 @llvm.vscale.i16()90  %res = icmp ule i16 %vscale, 891  ret i1 %res92}93 94define i1 @vscale_ult_max() vscale_range(4,8) {95; CHECK-LABEL: @vscale_ult_max(96; CHECK-NEXT:    [[VSCALE:%.*]] = call i16 @llvm.vscale.i16()97; CHECK-NEXT:    [[RES:%.*]] = icmp samesign ult i16 [[VSCALE]], 898; CHECK-NEXT:    ret i1 [[RES]]99;100  %vscale = call i16 @llvm.vscale.i16()101  %res = icmp ult i16 %vscale, 8102  ret i1 %res103}104 105define i1 @vscale_uge_min() vscale_range(4,8) {106; CHECK-LABEL: @vscale_uge_min(107; CHECK-NEXT:    ret i1 true108;109  %vscale = call i16 @llvm.vscale.i16()110  %res = icmp uge i16 %vscale, 4111  ret i1 %res112}113 114define i1 @vscale_ugt_min() vscale_range(4,8) {115; CHECK-LABEL: @vscale_ugt_min(116; CHECK-NEXT:    [[VSCALE:%.*]] = call i16 @llvm.vscale.i16()117; CHECK-NEXT:    [[RES:%.*]] = icmp samesign ugt i16 [[VSCALE]], 4118; CHECK-NEXT:    ret i1 [[RES]]119;120  %vscale = call i16 @llvm.vscale.i16()121  %res = icmp ugt i16 %vscale, 4122  ret i1 %res123}124 125define i1 @vscale_uge_no_max() vscale_range(4) {126; CHECK-LABEL: @vscale_uge_no_max(127; CHECK-NEXT:    ret i1 true128;129  %vscale = call i8 @llvm.vscale.i8()130  %res = icmp uge i8 %vscale, 4131  ret i1 %res132}133 134define i1 @vscale_ugt_no_max() vscale_range(4) {135; CHECK-LABEL: @vscale_ugt_no_max(136; CHECK-NEXT:    ret i1 false137;138  %vscale = call i8 @llvm.vscale.i8()139  %res = icmp ugt i8 %vscale, 4140  ret i1 %res141}142 143define i1 @vscale_uge_max_overflow() vscale_range(4,256) {144; CHECK-LABEL: @vscale_uge_max_overflow(145; CHECK-NEXT:    ret i1 true146;147  %vscale = call i8 @llvm.vscale.i8()148  %res = icmp uge i8 %vscale, 4149  ret i1 %res150}151 152define i1 @vscale_ugt_max_overflow() vscale_range(4,256) {153; CHECK-LABEL: @vscale_ugt_max_overflow(154; CHECK-NEXT:    [[VSCALE:%.*]] = call i8 @llvm.vscale.i8()155; CHECK-NEXT:    [[RES:%.*]] = icmp ugt i8 [[VSCALE]], 4156; CHECK-NEXT:    ret i1 [[RES]]157;158  %vscale = call i8 @llvm.vscale.i8()159  %res = icmp ugt i8 %vscale, 4160  ret i1 %res161}162 163define i1 @vscale_eq_min_overflow() vscale_range(256,512) {164; CHECK-LABEL: @vscale_eq_min_overflow(165; CHECK-NEXT:    ret i1 true166;167  %vscale = call i8 @llvm.vscale.i8()168  %res = icmp eq i8 %vscale, 42169  ret i1 %res170}171 172define i1 @vscale_ult_min_overflow() vscale_range(256,512) {173; CHECK-LABEL: @vscale_ult_min_overflow(174; CHECK-NEXT:    ret i1 true175;176  %vscale = call i8 @llvm.vscale.i8()177  %res = icmp ult i8 %vscale, 42178  ret i1 %res179}180 181define i1 @vscale_ugt_min_overflow() vscale_range(256,512) {182; CHECK-LABEL: @vscale_ugt_min_overflow(183; CHECK-NEXT:    ret i1 true184;185  %vscale = call i8 @llvm.vscale.i8()186  %res = icmp ugt i8 %vscale, 42187  ret i1 %res188}189 190declare i8 @llvm.vscale.i8()191declare i16 @llvm.vscale.i16()192declare i32 @llvm.vscale.i32()193declare i64 @llvm.vscale.i64()194