// RUN: mlir-opt %s --split-input-file | mlir-opt --split-input-file | FileCheck %s // CHECK-DAG: #[[FOLLOWUP:.*]] = #llvm.loop_annotation #followup = #llvm.loop_annotation // CHECK-DAG: #[[VECTORIZE:.*]] = #llvm.loop_vectorize #vectorize = #llvm.loop_vectorize< disable = false, predicateEnable = false, scalableEnable = true, width = 16 : i32, followupVectorized = #followup, followupEpilogue = #followup, followupAll = #followup > // CHECK-DAG: #[[INTERLEAVE:.*]] = #llvm.loop_interleave #interleave = #llvm.loop_interleave // CHECK-DAG: #[[UNROLL:.*]] = #llvm.loop_unroll #unroll = #llvm.loop_unroll< disable = true, count = 32 : i32, runtimeDisable = true, full = false, followupUnrolled = #followup, followupRemainder = #followup, followupAll = #followup > // CHECK-DAG: #[[UNROLL_AND_JAM:.*]] = #llvm.loop_unroll_and_jam #unrollAndJam = #llvm.loop_unroll_and_jam< disable = false, count = 16 : i32, followupOuter = #followup, followupInner = #followup, followupRemainderOuter = #followup, followupRemainderInner = #followup, followupAll = #followup > // CHECK-DAG: #[[LICM:.*]] = #llvm.loop_licm #licm = #llvm.loop_licm // CHECK-DAG: #[[DISTRIBUTE:.*]] = #llvm.loop_distribute #distribute = #llvm.loop_distribute< disable = true, followupCoincident = #followup, followupSequential = #followup, followupFallback = #followup, followupAll = #followup > // CHECK-DAG: #[[PIPELINE:.*]] = #llvm.loop_pipeline #pipeline = #llvm.loop_pipeline // CHECK-DAG: #[[PEELED:.*]] = #llvm.loop_peeled #peeled = #llvm.loop_peeled // CHECK-DAG: #[[UNSWITCH:.*]] = #llvm.loop_unswitch #unswitch = #llvm.loop_unswitch // CHECK-DAG: #[[GROUP1:.*]] = #llvm.access_group // CHECK-DAG: #[[GROUP2:.*]] = #llvm.access_group #group1 = #llvm.access_group> #group2 = #llvm.access_group> // CHECK: #[[LOOP_ANNOT:.*]] = #llvm.loop_annotation< // CHECK-DAG: disableNonforced = false // CHECK-DAG: mustProgress = true // CHECK-DAG: unroll = #[[UNROLL]] // CHECK-DAG: unrollAndJam = #[[UNROLL_AND_JAM]] // CHECK-DAG: licm = #[[LICM]] // CHECK-DAG: distribute = #[[DISTRIBUTE]] // CHECK-DAG: pipeline = #[[PIPELINE]] // CHECK-DAG: peeled = #[[PEELED]] // CHECK-DAG: unswitch = #[[UNSWITCH]] // CHECK-DAG: isVectorized = false // CHECK-DAG: parallelAccesses = #[[GROUP1]], #[[GROUP2]]> #loopMD = #llvm.loop_annotation // CHECK: llvm.func @loop_annotation llvm.func @loop_annotation() { // CHECK: llvm.br ^bb1 {llvm.loop = #[[LOOP_ANNOT]] llvm.br ^bb1 {llvm.loop = #loopMD} ^bb1: llvm.return } // ----- #di_file = #llvm.di_file<"metadata-loop.ll" in "/"> // CHECK-DAG: #[[START_LOC:.*]] = loc("loop-metadata.mlir":42:4) #loc1 = loc("loop-metadata.mlir":42:4) // CHECK-DAG: #[[END_LOC:.*]] = loc("loop-metadata.mlir":52:4) #loc2 = loc("loop-metadata.mlir":52:4) #di_compile_unit = #llvm.di_compile_unit, sourceLanguage = DW_LANG_C, file = #di_file, isOptimized = false, emissionKind = None> // CHECK-DAG: #[[SUBPROGRAM:.*]] = #llvm.di_subprogram< #di_subprogram = #llvm.di_subprogram // CHECK-DAG: #[[START_LOC_FUSED:.*]] = loc(fused<#[[SUBPROGRAM]]>[#[[START_LOC]]] #start_loc_fused = loc(fused<#di_subprogram>[#loc1]) // CHECK-DAG: #[[END_LOC_FUSED:.*]] = loc(fused<#[[SUBPROGRAM]]>[#[[END_LOC]]] #end_loc_fused= loc(fused<#di_subprogram>[#loc2]) // CHECK-DAG: #[[GROUP1:.*]] = #llvm.access_group // CHECK-DAG: #[[GROUP2:.*]] = #llvm.access_group #group1 = #llvm.access_group> #group2 = #llvm.access_group> // CHECK: #[[LOOP_ANNOT:.*]] = #llvm.loop_annotation< // CHECK-DAG: disableNonforced = false // CHECK-DAG: startLoc = #[[START_LOC_FUSED]] // CHECK-DAG: endLoc = #[[END_LOC_FUSED]] // CHECK-DAG: parallelAccesses = #[[GROUP1]], #[[GROUP2]]> #loopMD = #llvm.loop_annotation // CHECK: llvm.func @loop_annotation_with_locs llvm.func @loop_annotation_with_locs() { // CHECK: llvm.br ^bb1 {loop_annotation = #[[LOOP_ANNOT]] llvm.br ^bb1 {loop_annotation = #loopMD} ^bb1: llvm.return }