brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.8 KiB · 47805e5 Raw
520 lines · plain
1// RUN: mlir-opt %s -pass-pipeline="builtin.module(func.func(test-print-liveness))" -split-input-file 2>&1 | FileCheck %s2 3// CHECK-LABEL: Testing : func_empty4func.func @func_empty() {5  // CHECK: Block: 06  // CHECK-NEXT: LiveIn:{{ *$}}7  // CHECK-NEXT: LiveOut:{{ *$}}8  // CHECK-NEXT: BeginLivenessIntervals9  // CHECK-NEXT: EndLivenessIntervals10  // CHECK-NEXT: BeginCurrentlyLive11  // CHECK-NEXT: EndCurrentlyLive12  return13}14 15// -----16 17// CHECK-LABEL: Testing : func_simpleBranch18func.func @func_simpleBranch(%arg0: i32, %arg1 : i32) -> i32 {19  // CHECK: Block: 020  // CHECK-NEXT: LiveIn:{{ *$}}21  // CHECK-NEXT: LiveOut: arg0@0 arg1@022  // CHECK-NEXT: BeginLivenessIntervals23  // CHECK-NEXT: EndLivenessIntervals24  // CHECK-NEXT: BeginCurrentlyLive25  // CHECK: cf.br26  // CHECK-SAME:   arg0@0 arg1@027  // CHECK-NEXT: EndCurrentlyLive28  cf.br ^exit29^exit:30  // CHECK: Block: 131  // CHECK-NEXT: LiveIn: arg0@0 arg1@032  // CHECK-NEXT: LiveOut:{{ *$}}33  // CHECK-NEXT: BeginLivenessIntervals34  // CHECK: val_235  // CHECK-NEXT:     %0 = arith.addi36  // CHECK-NEXT:     return37  // CHECK-NEXT: EndLivenessIntervals38  // CHECK-NEXT: BeginCurrentlyLive39  // CHECK: arith.addi40  // CHECK-SAME:    arg0@0 arg1@0 val_241  // CHECK: return42  // CHECK-SAME:    val_243  // CHECK-NEXT:EndCurrentlyLive44  %result = arith.addi %arg0, %arg1 : i3245  return %result : i3246}47 48// -----49 50// CHECK-LABEL: Testing : func_condBranch51func.func @func_condBranch(%cond : i1, %arg1: i32, %arg2 : i32) -> i32 {52  // CHECK: Block: 053  // CHECK-NEXT: LiveIn:{{ *$}}54  // CHECK-NEXT: LiveOut: arg1@0 arg2@055  // CHECK-NEXT: BeginLivenessIntervals56  // CHECK-NEXT: EndLivenessIntervals57  // CHECK-NEXT: BeginCurrentlyLive58  // CHECK: cf.cond_br59  // CHECK-SAME:   arg0@0 arg1@0 arg2@060  // CHECK-NEXT: EndCurrentlyLive61  cf.cond_br %cond, ^bb1, ^bb262^bb1:63  // CHECK: Block: 164  // CHECK-NEXT: LiveIn: arg1@0 arg2@065  // CHECK-NEXT: LiveOut: arg1@0 arg2@066  // CHECK: BeginCurrentlyLive67  // CHECK: cf.br68  // COM: arg0@0 had its last user in the previous block.69  // CHECK-SAME:   arg1@0 arg2@070  // CHECK-NEXT: EndCurrentlyLive71  cf.br ^exit72^bb2:73  // CHECK: Block: 274  // CHECK-NEXT: LiveIn: arg1@0 arg2@075  // CHECK-NEXT: LiveOut: arg1@0 arg2@076  // CHECK: BeginCurrentlyLive77  // CHECK: cf.br78  // CHECK-SAME:   arg1@0 arg2@079  // CHECK-NEXT: EndCurrentlyLive80  cf.br ^exit81^exit:82  // CHECK: Block: 383  // CHECK-NEXT: LiveIn: arg1@0 arg2@084  // CHECK-NEXT: LiveOut:{{ *$}}85  // CHECK-NEXT: BeginLivenessIntervals86  // CHECK: val_387  // CHECK-NEXT:     %0 = arith.addi88  // CHECK-NEXT:     return89  // CHECK-NEXT: EndLivenessIntervals90  // CHECK-NEXT: BeginCurrentlyLive91  // CHECK: arith.addi92  // CHECK-SAME:   arg1@0 arg2@0 val_393  // CHECK: return94  // CHECK-SAME:  val_395  // CHECK-NEXT: EndCurrentlyLive96  %result = arith.addi %arg1, %arg2 : i3297  return %result : i3298}99 100// -----101 102// CHECK-LABEL: Testing : func_loop103func.func @func_loop(%arg0 : i32, %arg1 : i32) -> i32 {104  // CHECK: Block: 0105  // CHECK-NEXT: LiveIn:{{ *$}}106  // CHECK-NEXT: LiveOut: arg1@0107  // CHECK: BeginCurrentlyLive108  // CHECK: arith.constant109  // CHECK-SAME:  arg0@0 arg1@0 val_2110  // CHECK: cf.br111  // CHECK-SAME:  arg0@0 arg1@0 val_2112  // CHECK-NEXT: EndCurrentlyLive113  %const0 = arith.constant 0 : i32114  cf.br ^loopHeader(%const0, %arg0 : i32, i32)115^loopHeader(%counter : i32, %i : i32):116  // CHECK: Block: 1117  // CHECK-NEXT: LiveIn: arg1@0118  // CHECK-NEXT: LiveOut: arg1@0 arg0@1119  // CHECK-NEXT: BeginLivenessIntervals120  // CHECK-NEXT: val_5121  // CHECK-NEXT:     %2 = arith.cmpi122  // CHECK-NEXT:     cf.cond_br123  // CHECK-NEXT: EndLivenessIntervals124  // CHECK-NEXT: BeginCurrentlyLive125  // CHECK: arith.cmpi126  // CHECK-SAME:  arg1@0 arg0@1 arg1@1 val_5127  // CHECK: cf.cond_br128  // CHECK-SAME:  arg1@0 arg0@1 arg1@1 val_5129  // CHECK-NEXT: EndCurrentlyLive130  %lessThan = arith.cmpi slt, %counter, %arg1 : i32131  cf.cond_br %lessThan, ^loopBody(%i : i32), ^exit(%i : i32)132^loopBody(%val : i32):133  // CHECK: Block: 2134  // CHECK-NEXT: LiveIn: arg1@0 arg0@1135  // CHECK-NEXT: LiveOut: arg1@0136  // CHECK-NEXT: BeginLivenessIntervals137  // CHECK-NEXT: val_7138  // CHECK-NEXT:     %c139  // CHECK-NEXT:     %4 = arith.addi140  // CHECK-NEXT:     %5 = arith.addi141  // CHECK-NEXT: val_8142  // CHECK-NEXT:     %4 = arith.addi143  // CHECK-NEXT:     %5 = arith.addi144  // CHECK-NEXT:     cf.br145  // CHECK: EndLivenessIntervals146  // CHECK-NEXT: BeginCurrentlyLive147  // CHECK: arith.constant148  // CHECK-SAME:  arg1@0 arg0@1 arg0@2 val_7149  // CHECK: arith.addi150  // CHECK-SAME:  arg1@0 arg0@1 arg0@2 val_7 val_8151  // CHECK: arith.addi152  // CHECK-SAME:  arg1@0 arg0@1 val_7 val_8 val_9153  // CHECK: cf.br154  // CHECK-SAME:  arg1@0 val_8 val_9155  // CHECK-NEXT: EndCurrentlyLive156  %const1 = arith.constant 1 : i32157  %inc = arith.addi %val, %const1 : i32158  %inc2 = arith.addi %counter, %const1 : i32159  cf.br ^loopHeader(%inc, %inc2 : i32, i32)160^exit(%sum : i32):161  // CHECK: Block: 3162  // CHECK-NEXT: LiveIn: arg1@0163  // CHECK-NEXT: LiveOut:{{ *$}}164  // CHECK: BeginCurrentlyLive165  // CHECK: arith.addi166  // CHECK-SAME:  arg1@0 arg0@3 val_11167  // CHECK: return168  // CHECK-SAME:  val_11169  // CHECK-NEXT: EndCurrentlyLive170  %result = arith.addi %sum, %arg1 : i32171  return %result : i32172}173 174// -----175 176// CHECK-LABEL: Testing : func_ranges177func.func @func_ranges(%cond : i1, %arg1 : i32, %arg2 : i32, %arg3 : i32) -> i32 {178  // CHECK: Block: 0179  // CHECK-NEXT: LiveIn:{{ *$}}180  // CHECK-NEXT: LiveOut: arg2@0 val_9 val_10181  // CHECK-NEXT: BeginLivenessIntervals182  // CHECK-NEXT: val_4183  // CHECK-NEXT:    %0 = arith.addi184  // CHECK-NEXT:    %c185  // CHECK-NEXT:    %1 = arith.addi186  // CHECK-NEXT:    %2 = arith.addi187  // CHECK-NEXT:    %3 = arith.muli188  // CHECK-NEXT: val_5189  // CHECK-NEXT:    %c190  // CHECK-NEXT:    %1 = arith.addi191  // CHECK-NEXT:    %2 = arith.addi192  // CHECK-NEXT:    %3 = arith.muli193  // CHECK-NEXT:    %4 = arith.muli194  // CHECK-NEXT:    %5 = arith.addi195  // CHECK-NEXT: val_6196  // CHECK-NEXT:    %1 = arith.addi197  // CHECK-NEXT:    %2 = arith.addi198  // CHECK-NEXT:    %3 = arith.muli199  // CHECK-NEXT: val_7200  // CHECK-NEXT:   %2 = arith.addi201  // CHECK-NEXT:   %3 = arith.muli202  // CHECK-NEXT:   %4 = arith.muli203  // CHECK:      val_8204  // CHECK-NEXT:    %3 = arith.muli205  // CHECK-NEXT:    %4 = arith.muli206  // CHECK-NEXT: val_9207  // CHECK-NEXT:    %4 = arith.muli208  // CHECK-NEXT:    %5 = arith.addi209  // CHECK-NEXT:    cf.cond_br210  // CHECK-NEXT:    %c211  // CHECK-NEXT:    %6 = arith.muli212  // CHECK-NEXT:    %7 = arith.muli213  // CHECK-NEXT:    %8 = arith.addi214  // CHECK-NEXT: val_10215  // CHECK-NEXT:    %5 = arith.addi216  // CHECK-NEXT:    cf.cond_br217  // CHECK-NEXT:    %7218  // CHECK: EndLivenessIntervals219  // CHECK-NEXT: BeginCurrentlyLive220  // CHECK: arith.addi221  // CHECK-SAME:  arg0@0 arg1@0 arg2@0 arg3@0 val_4222  // CHECK: arith.constant223  // CHECK-SAME:  arg0@0 arg2@0 arg3@0 val_4 val_5224  // CHECK: arith.addi225  // CHECK-SAME:  arg0@0 arg2@0 arg3@0 val_4 val_5 val_6226  // CHECK: arith.addi227  // CHECK-SAME:  arg0@0 arg2@0 arg3@0 val_4 val_5 val_6 val_7228  // CHECK: arith.muli229  // CHECK-SAME:  arg0@0 arg2@0 val_4 val_5 val_6 val_7 val_8230  // CHECK: arith.muli231  // CHECK-SAME:  arg0@0 arg2@0 val_5 val_7 val_8 val_9232  // CHECK: arith.addi233  // CHECK-SAME:  arg0@0 arg2@0 val_5 val_9 val_10234  // CHECK: cf.cond_br235  // CHECK-SAME:  arg0@0 arg2@0 val_9 val_10236  // CHECK-NEXT: EndCurrentlyLive237  %0 = arith.addi %arg1, %arg2 : i32238  %const1 = arith.constant 1 : i32239  %1 = arith.addi %const1, %arg2 : i32240  %2 = arith.addi %const1, %arg3 : i32241  %3 = arith.muli %0, %1 : i32242  %4 = arith.muli %3, %2 : i32243  %5 = arith.addi %4, %const1 : i32244  cf.cond_br %cond, ^bb1, ^bb2245 246^bb1:247  // CHECK: Block: 1248  // CHECK-NEXT: LiveIn: arg2@0 val_9249  // CHECK-NEXT: LiveOut: arg2@0250  // CHECK: BeginCurrentlyLive251  // CHECK: arith.constant252  // CHECK-SAME:  arg2@0 val_9253  // CHECK: arith.muli254  // CHECK-SAME:  arg2@0 val_9255  // CHECK: cf.br256  // CHECK-SAME:  arg2@0257  // CHECK-NEXT: EndCurrentlyLive258  %const4 = arith.constant 4 : i32259  %6 = arith.muli %4, %const4 : i32260  cf.br ^exit(%6 : i32)261 262^bb2:263  // CHECK: Block: 2264  // CHECK-NEXT: LiveIn: arg2@0 val_9 val_10265  // CHECK-NEXT: LiveOut: arg2@0266  // CHECK: BeginCurrentlyLive267  // CHECK: arith.muli268  // CHECK-SAME:  arg2@0 val_9 val_10269  // CHECK: arith.addi270  // CHECK-SAME:  arg2@0271  // CHECK: cf.br272  // CHECK-SAME:  arg2@0273  // CHECK: EndCurrentlyLive274  %7 = arith.muli %4, %5 : i32275  %8 = arith.addi %4, %arg2 : i32276  cf.br ^exit(%8 : i32)277 278^exit(%sum : i32):279  // CHECK: Block: 3280  // CHECK-NEXT: LiveIn: arg2@0281  // CHECK-NEXT: LiveOut:{{ *$}}282  // CHECK: BeginCurrentlyLive283  // CHECK: arith.addi284  // CHECK-SAME:  arg2@0285  // CHECK: return286  // CHECK-NOT: arg2@0287  // CHECK: EndCurrentlyLive288  %result = arith.addi %sum, %arg2 : i32289  return %result : i32290}291 292// -----293 294// CHECK-LABEL: Testing : nested_region295 296func.func @nested_region(297  %arg0 : index, %arg1 : index, %arg2 : index,298  %arg3 : i32, %arg4 : i32, %arg5 : i32,299  %buffer : memref<i32>) -> i32 {300  // CHECK: Block: 0301  // CHECK-NEXT: LiveIn:{{ *$}}302  // CHECK-NEXT: LiveOut:{{ *$}}303  // CHECK-NEXT: BeginLivenessIntervals304  // CHECK-NEXT: val_7305  // CHECK-NEXT:    %0 = arith.addi306  // CHECK-NEXT:    %1 = arith.addi307  // CHECK-NEXT:    scf.for308  // CHECK:         // %2 = arith.addi309  // CHECK-NEXT:    %3 = arith.addi310  // CHECK-NEXT: val_8311  // CHECK-NEXT:    %1 = arith.addi312  // CHECK-NEXT:    scf.for313  // CHECK:         // func.return %1314  // CHECK: EndLivenessIntervals315  // CHECK-NEXT: BeginCurrentlyLive316  // CHECK: arith.addi317  // CHECK-SAME:  arg0@0 arg1@0 arg2@0 arg3@0 arg4@0 arg5@0 arg6@0 val_7318  // CHECK: arith.addi319  // CHECK-SAME:  arg0@0 arg1@0 arg2@0 arg4@0 arg5@0 arg6@0 val_7 val_8320  // CHECK: scf.for321  // CHECK-NEXT: arith.addi322  // CHECK-NEXT: arith.addi323  // CHECK-NEXT: memref.store324  // CHECK-NEXT:  arg5@0 arg6@0 val_7 val_8325  // CHECK: return326  // CHECK-SAME:  val_8327  // CHECK-NEXT: EndCurrentlyLive328  %0 = arith.addi %arg3, %arg4 : i32329  %1 = arith.addi %arg4, %arg5 : i32330  scf.for %arg6 = %arg0 to %arg1 step %arg2 {331    // CHECK: Block: 1332    // CHECK-NEXT: LiveIn: arg5@0 arg6@0 val_7333    // CHECK-NEXT: LiveOut:{{ *$}}334    // CHECK: BeginCurrentlyLive335    // CHECK-NEXT: arith.addi336    // CHECK-SAME:   arg5@0 arg6@0 val_7 arg0@1 val_10337    // CHECK-NEXT: arith.addi338    // CHECK-SAME:   arg6@0 val_7 val_10 val_11339    // CHECK-NEXT: memref.store340    // CHECK-SAME:   arg6@0 val_11341    // CHECK-NEXT: EndCurrentlyLive342    %2 = arith.addi %0, %arg5 : i32343    %3 = arith.addi %2, %0 : i32344    memref.store %3, %buffer[] : memref<i32>345  }346  return %1 : i32347}348 349// -----350 351// CHECK-LABEL: Testing : nested_region2352 353func.func @nested_region2(354  // CHECK: Block: 0355  // CHECK-NEXT: LiveIn:{{ *$}}356  // CHECK-NEXT: LiveOut:{{ *$}}357  // CHECK-NEXT: BeginLivenessIntervals358  // CHECK-NEXT: val_7359  // CHECK-NEXT:    %0 = arith.addi360  // CHECK-NEXT:    %1 = arith.addi361  // CHECK-NEXT:    scf.for362  // CHECK:         // %2 = arith.addi363  // CHECK-NEXT:    scf.for364  // CHECK:         // %3 = arith.addi365  // CHECK-NEXT: val_8366  // CHECK-NEXT:    %1 = arith.addi367  // CHECK-NEXT:    scf.for368  // CHECK:         // func.return %1369  // CHECK: EndLivenessIntervals370  // CHECK-NEXT: BeginCurrentlyLive371  // CHECK-NEXT: arith.addi372  // CHECK-SAME:   arg0@0 arg1@0 arg2@0 arg3@0 arg4@0 arg5@0 arg6@0 val_7373  // CHECK-NEXT: arith.addi374  // CHECK-SAME:   arg0@0 arg1@0 arg2@0 arg4@0 arg5@0 arg6@0 val_7 val_8375  // CHECK-NEXT: scf.for {{.*}}376  // CHECK-NEXT:   arith.addi377  // CHECK-NEXT:   scf.for {{.*}} {378  // CHECK-NEXT:     arith.addi379  // CHECK-NEXT:     memref.store380  // CHECK-NEXT:   }381  // CHECK-NEXT: arg0@0 arg1@0 arg2@0 arg5@0 arg6@0 val_7 val_8382  // CHECK-NEXT: return383  // CHECK-SAME:  val_8384  %arg0 : index, %arg1 : index, %arg2 : index,385  %arg3 : i32, %arg4 : i32, %arg5 : i32,386  %buffer : memref<i32>) -> i32 {387  %0 = arith.addi %arg3, %arg4 : i32388  %1 = arith.addi %arg4, %arg5 : i32389  scf.for %arg6 = %arg0 to %arg1 step %arg2 {390    // CHECK: Block: 1391    // CHECK-NEXT: LiveIn: arg0@0 arg1@0 arg2@0 arg5@0 arg6@0 val_7392    // CHECK-NEXT: LiveOut:{{ *$}}393    // CHECK-NEXT: BeginLivenessIntervals394    // CHECK-NEXT: val_10395    // CHECK-NEXT:    %2 = arith.addi396    // CHECK-NEXT:    scf.for397    // CHECK:         // %3 = arith.addi398    // CHECK: EndLivenessIntervals399    // CHECK-NEXT: BeginCurrentlyLive400    // CHECK-NEXT: arith.addi401    // CHECK-SAME:   arg0@0 arg1@0 arg2@0 arg5@0 arg6@0 val_7 arg0@1 val_10402    // CHECK-NEXT: scf.for {{.*}}403    // CHECK-NEXT:   arith.addi404    // CHECK-NEXT:   memref.store405    // CHECK-NEXT: arg0@0 arg1@0 arg2@0 arg6@0 val_7406    %2 = arith.addi %0, %arg5 : i32407    scf.for %arg7 = %arg0 to %arg1 step %arg2 {408      // CHECK: Block: 2409      // CHECK: BeginCurrentlyLive410      // CHECK-NEXT: arith.addi411      // CHECK-SAME:   arg6@0 val_7 val_10 arg0@2 val_12412      // CHECK-NEXT: memref.store413      // CHECK-SAME:   arg6@0 val_12414      // CHECK: EndCurrentlyLive415      %3 = arith.addi %2, %0 : i32416      memref.store %3, %buffer[] : memref<i32>417    }418  }419  return %1 : i32420}421 422// -----423 424// CHECK-LABEL: Testing : nested_region3425 426func.func @nested_region3(427  // CHECK: Block: 0428  // CHECK-NEXT: LiveIn:{{ *$}}429  // CHECK-NEXT: LiveOut: arg0@0 arg1@0 arg2@0 arg6@0 val_7 val_8430  // CHECK-NEXT: BeginLivenessIntervals431  // CHECK-NEXT: val_7432  // CHECK-NEXT:    %0 = arith.addi433  // CHECK-NEXT:    %1 = arith.addi434  // CHECK-NEXT:    scf.for435  // CHECK:         // cf.br ^bb1436  // CHECK-NEXT:    %2 = arith.addi437  // CHECK-NEXT:    scf.for438  // CHECK:         // %2 = arith.addi439  // CHECK: EndLivenessIntervals440  // CHECK-NEXT: BeginCurrentlyLive441  // CHECK-NEXT: arith.addi442  // CHECK-SAME:   arg0@0 arg1@0 arg2@0 arg3@0 arg4@0 arg5@0 arg6@0 val_7443  // CHECK-NEXT: arith.addi444  // CHECK-SAME:   arg0@0 arg1@0 arg2@0 arg4@0 arg5@0 arg6@0 val_7 val_8445  // CHECK-NEXT: scf.for446  // COM: Skipping the body of the scf.for...447  // CHECK: arg0@0 arg1@0 arg2@0 arg5@0 arg6@0 val_7 val_8448  // CHECK-NEXT: cf.br449  // CHECK-SAME:   arg0@0 arg1@0 arg2@0 arg6@0 val_7 val_8450  // CHECK-NEXT: EndCurrentlyLive451  %arg0 : index, %arg1 : index, %arg2 : index,452  %arg3 : i32, %arg4 : i32, %arg5 : i32,453  %buffer : memref<i32>) -> i32 {454  %0 = arith.addi %arg3, %arg4 : i32455  %1 = arith.addi %arg4, %arg5 : i32456  scf.for %arg6 = %arg0 to %arg1 step %arg2 {457    // CHECK: Block: 1458    // CHECK-NEXT: LiveIn: arg5@0 arg6@0 val_7459    // CHECK-NEXT: LiveOut:{{ *$}}460    // CHECK: BeginCurrentlyLive461    // CHECK-NEXT: arith.addi462    // CHECK-SAME:   arg5@0 arg6@0 val_7 arg0@1 val_10463    // CHECK-NEXT: memref.store464    // CHECK-SAME:   arg6@0 val_10465    // CHECK-NEXT: EndCurrentlyLive466    %2 = arith.addi %0, %arg5 : i32467    memref.store %2, %buffer[] : memref<i32>468  }469  cf.br ^exit470 471^exit:472  // CHECK: Block: 2473  // CHECK-NEXT: LiveIn: arg0@0 arg1@0 arg2@0 arg6@0 val_7 val_8474  // CHECK-NEXT: LiveOut:{{ *$}}475  // CHECK: BeginCurrentlyLive476  // CHECK: scf.for477  // CHECK: arg0@0 arg1@0 arg2@0 arg6@0 val_7 val_8478  // CHECK-NEXT: return479  // CHECK-SAME:   val_8480  // CHECK-NEXT: EndCurrentlyLive481  scf.for %arg7 = %arg0 to %arg1 step %arg2 {482    // CHECK: Block: 3483    // CHECK-NEXT: LiveIn: arg6@0 val_7 val_8484    // CHECK-NEXT: LiveOut:{{ *$}}485    // CHECK: BeginCurrentlyLive486    // CHECK-NEXT: arith.addi487    // CHECK-SAME:   arg6@0 val_7 val_8 arg0@3 val_12488    // CHECK-NEXT: memref.store489    // CHECK-SAME:   arg6@0 val_12490    // CHECK-NEXT: EndCurrentlyLive491    %2 = arith.addi %0, %1 : i32492    memref.store %2, %buffer[] : memref<i32>493  }494  return %1 : i32495}496 497// -----498 499// CHECK-LABEL: Testing : nested_region4500 501func.func @nested_region4(%arg0: index, %arg1: index, %arg2: index) {502  // CHECK: Block: 0503  // CHECK-NEXT: LiveIn:{{ *$}}504  // CHECK-NEXT: LiveOut:{{ *$}}505 506  // CHECK: {{^// +}}[[VAL3:[a-z0-9_]+]]{{ *:}}507  // CHECK: {{^// +}}[[VAL4:[a-z0-9_]+]]{{ *:}}508  %c0_i32 = arith.constant 0 : i32509  %c1_i32 = arith.constant 1 : i32510 511  %0 = scf.for %arg3 = %arg0 to %arg1 step %arg2 iter_args(%arg4 = %c0_i32) -> (i32) {512    // CHECK: Block: 1513    // CHECK-NEXT: LiveIn: [[VAL4]]{{ *$}}514    // CHECK-NEXT: LiveOut:{{ *$}}515    %1 = arith.addi %arg4, %c1_i32 : i32516    scf.yield %1 : i32517  }518  return519}520