402 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_analyze_test_checks.py UTC_ARGS: --version 22; RUN: opt -passes="print<cost-model>" 2>&1 -disable-output -cost-kind=all -mtriple=aarch64 < %s | FileCheck %s3 4target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"5target triple = "aarch64-linux-gnu"6 7define i8 @test1(ptr %p) {8; CHECK-LABEL: 'test1'9; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i8, ptr %p, i32 110; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 111; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v12;13 %a = getelementptr inbounds i8, ptr %p, i32 114 %v = load i8, ptr %a15 ret i8 %v16}17 18define i16 @test2(ptr %p) {19; CHECK-LABEL: 'test2'20; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i16, ptr %p, i32 121; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 222; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v23;24 %a = getelementptr inbounds i16, ptr %p, i32 125 %v = load i16, ptr %a26 ret i16 %v27}28 29define i32 @test3(ptr %p) {30; CHECK-LABEL: 'test3'31; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i32, ptr %p, i32 132; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 433; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v34;35 %a = getelementptr inbounds i32, ptr %p, i32 136 %v = load i32, ptr %a37 ret i32 %v38}39 40define i64 @test4(ptr %p) {41; CHECK-LABEL: 'test4'42; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i64, ptr %p, i32 143; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 844; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v45;46 %a = getelementptr inbounds i64, ptr %p, i32 147 %v = load i64, ptr %a48 ret i64 %v49}50 51define i8 @test5(ptr %p) {52; CHECK-LABEL: 'test5'53; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i8, ptr %p, i32 102454; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 155; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v56;57 %a = getelementptr inbounds i8, ptr %p, i32 102458 %v = load i8, ptr %a59 ret i8 %v60}61 62define i16 @test6(ptr %p) {63; CHECK-LABEL: 'test6'64; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i16, ptr %p, i32 102465; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 266; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v67;68 %a = getelementptr inbounds i16, ptr %p, i32 102469 %v = load i16, ptr %a70 ret i16 %v71}72 73define i32 @test7(ptr %p) {74; CHECK-LABEL: 'test7'75; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i32, ptr %p, i32 102476; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 477; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v78;79 %a = getelementptr inbounds i32, ptr %p, i32 102480 %v = load i32, ptr %a81 ret i32 %v82}83 84define i64 @test8(ptr %p) {85; CHECK-LABEL: 'test8'86; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i64, ptr %p, i32 102487; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 888; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v89;90 %a = getelementptr inbounds i64, ptr %p, i32 102491 %v = load i64, ptr %a92 ret i64 %v93}94 95define i8 @test9(ptr %p) {96; CHECK-LABEL: 'test9'97; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i8, ptr %p, i32 409698; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 199; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v100;101 %a = getelementptr inbounds i8, ptr %p, i32 4096102 %v = load i8, ptr %a103 ret i8 %v104}105 106define i16 @test10(ptr %p) {107; CHECK-LABEL: 'test10'108; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i16, ptr %p, i32 4096109; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2110; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v111;112 %a = getelementptr inbounds i16, ptr %p, i32 4096113 %v = load i16, ptr %a114 ret i16 %v115}116 117define i32 @test11(ptr %p) {118; CHECK-LABEL: 'test11'119; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i32, ptr %p, i32 4096120; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4121; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v122;123 %a = getelementptr inbounds i32, ptr %p, i32 4096124 %v = load i32, ptr %a125 ret i32 %v126}127 128define i64 @test12(ptr %p) {129; CHECK-LABEL: 'test12'130; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i64, ptr %p, i32 4096131; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8132; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v133;134 %a = getelementptr inbounds i64, ptr %p, i32 4096135 %v = load i64, ptr %a136 ret i64 %v137}138 139define i8 @test13(ptr %p) {140; CHECK-LABEL: 'test13'141; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i8, ptr %p, i32 -64142; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 1143; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v144;145 %a = getelementptr inbounds i8, ptr %p, i32 -64146 %v = load i8, ptr %a147 ret i8 %v148}149 150define i16 @test14(ptr %p) {151; CHECK-LABEL: 'test14'152; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i16, ptr %p, i32 -64153; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2154; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v155;156 %a = getelementptr inbounds i16, ptr %p, i32 -64157 %v = load i16, ptr %a158 ret i16 %v159}160 161define i32 @test15(ptr %p) {162; CHECK-LABEL: 'test15'163; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i32, ptr %p, i32 -64164; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4165; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v166;167 %a = getelementptr inbounds i32, ptr %p, i32 -64168 %v = load i32, ptr %a169 ret i32 %v170}171 172define i64 @test16(ptr %p) {173; CHECK-LABEL: 'test16'174; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i64, ptr %p, i32 -64175; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8176; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v177;178 %a = getelementptr inbounds i64, ptr %p, i32 -64179 %v = load i64, ptr %a180 ret i64 %v181}182 183define i8 @test17(ptr %p) {184; CHECK-LABEL: 'test17'185; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i8, ptr %p, i32 -1024186; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 1187; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v188;189 %a = getelementptr inbounds i8, ptr %p, i32 -1024190 %v = load i8, ptr %a191 ret i8 %v192}193 194define i16 @test18(ptr %p) {195; CHECK-LABEL: 'test18'196; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i16, ptr %p, i32 -1024197; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2198; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v199;200 %a = getelementptr inbounds i16, ptr %p, i32 -1024201 %v = load i16, ptr %a202 ret i16 %v203}204 205define i32 @test19(ptr %p) {206; CHECK-LABEL: 'test19'207; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i32, ptr %p, i32 -1024208; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4209; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v210;211 %a = getelementptr inbounds i32, ptr %p, i32 -1024212 %v = load i32, ptr %a213 ret i32 %v214}215 216define i64 @test20(ptr %p) {217; CHECK-LABEL: 'test20'218; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i64, ptr %p, i32 -1024219; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8220; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v221;222 %a = getelementptr inbounds i64, ptr %p, i32 -1024223 %v = load i64, ptr %a224 ret i64 %v225}226 227define i8 @test21(ptr %p, i32 %i) {228; CHECK-LABEL: 'test21'229; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i8, ptr %p, i32 %i230; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 1231; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v232;233 %a = getelementptr inbounds i8, ptr %p, i32 %i234 %v = load i8, ptr %a235 ret i8 %v236}237 238define i16 @test22(ptr %p, i32 %i) {239; CHECK-LABEL: 'test22'240; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i16, ptr %p, i32 %i241; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2242; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v243;244 %a = getelementptr inbounds i16, ptr %p, i32 %i245 %v = load i16, ptr %a246 ret i16 %v247}248 249define i32 @test23(ptr %p, i32 %i) {250; CHECK-LABEL: 'test23'251; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i32, ptr %p, i32 %i252; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4253; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v254;255 %a = getelementptr inbounds i32, ptr %p, i32 %i256 %v = load i32, ptr %a257 ret i32 %v258}259 260define i64 @test24(ptr %p, i32 %i) {261; CHECK-LABEL: 'test24'262; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i64, ptr %p, i32 %i263; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8264; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v265;266 %a = getelementptr inbounds i64, ptr %p, i32 %i267 %v = load i64, ptr %a268 ret i64 %v269}270 271define i8 @test25(ptr %p) {272; CHECK-LABEL: 'test25'273; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i8, ptr %p, i32 -128274; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 1275; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v276;277 %a = getelementptr inbounds i8, ptr %p, i32 -128278 %v = load i8, ptr %a279 ret i8 %v280}281 282define i16 @test26(ptr %p) {283; CHECK-LABEL: 'test26'284; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i16, ptr %p, i32 -128285; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2286; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v287;288 %a = getelementptr inbounds i16, ptr %p, i32 -128289 %v = load i16, ptr %a290 ret i16 %v291}292 293define i32 @test27(ptr %p) {294; CHECK-LABEL: 'test27'295; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i32, ptr %p, i32 -128296; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4297; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v298;299 %a = getelementptr inbounds i32, ptr %p, i32 -128300 %v = load i32, ptr %a301 ret i32 %v302}303 304define i64 @test28(ptr %p) {305; CHECK-LABEL: 'test28'306; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i64, ptr %p, i32 -128307; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8308; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v309;310 %a = getelementptr inbounds i64, ptr %p, i32 -128311 %v = load i64, ptr %a312 ret i64 %v313}314 315define i8 @test29(ptr %p) {316; CHECK-LABEL: 'test29'317; CHECK-NEXT: Cost Model: Found costs of 0 for: %a = getelementptr inbounds i8, ptr %p, i32 -256318; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 1319; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v320;321 %a = getelementptr inbounds i8, ptr %p, i32 -256322 %v = load i8, ptr %a323 ret i8 %v324}325 326define i16 @test30(ptr %p) {327; CHECK-LABEL: 'test30'328; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i16, ptr %p, i32 -256329; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2330; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v331;332 %a = getelementptr inbounds i16, ptr %p, i32 -256333 %v = load i16, ptr %a334 ret i16 %v335}336 337define i32 @test31(ptr %p) {338; CHECK-LABEL: 'test31'339; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i32, ptr %p, i32 -256340; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4341; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v342;343 %a = getelementptr inbounds i32, ptr %p, i32 -256344 %v = load i32, ptr %a345 ret i32 %v346}347 348define i64 @test32(ptr %p) {349; CHECK-LABEL: 'test32'350; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i64, ptr %p, i32 -256351; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8352; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v353;354 %a = getelementptr inbounds i64, ptr %p, i32 -256355 %v = load i64, ptr %a356 ret i64 %v357}358 359define i8 @test33(ptr %p) {360; CHECK-LABEL: 'test33'361; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i8, ptr %p, i32 -512362; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i8, ptr %a, align 1363; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i8 %v364;365 %a = getelementptr inbounds i8, ptr %p, i32 -512366 %v = load i8, ptr %a367 ret i8 %v368}369 370define i16 @test34(ptr %p) {371; CHECK-LABEL: 'test34'372; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i16, ptr %p, i32 -512373; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i16, ptr %a, align 2374; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i16 %v375;376 %a = getelementptr inbounds i16, ptr %p, i32 -512377 %v = load i16, ptr %a378 ret i16 %v379}380 381define i32 @test35(ptr %p) {382; CHECK-LABEL: 'test35'383; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i32, ptr %p, i32 -512384; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i32, ptr %a, align 4385; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i32 %v386;387 %a = getelementptr inbounds i32, ptr %p, i32 -512388 %v = load i32, ptr %a389 ret i32 %v390}391 392define i64 @test36(ptr %p) {393; CHECK-LABEL: 'test36'394; CHECK-NEXT: Cost Model: Found costs of 1 for: %a = getelementptr inbounds i64, ptr %p, i32 -512395; CHECK-NEXT: Cost Model: Found costs of RThru:1 CodeSize:1 Lat:4 SizeLat:1 for: %v = load i64, ptr %a, align 8396; CHECK-NEXT: Cost Model: Found costs of RThru:0 CodeSize:1 Lat:1 SizeLat:1 for: ret i64 %v397;398 %a = getelementptr inbounds i64, ptr %p, i32 -512399 %v = load i64, ptr %a400 ret i64 %v401}402