brintos

brintos / llvm-project-archived public Read only

0
0
Text · 8.6 KiB · a5c9b3e Raw
247 lines · plain
1// RUN: mlir-opt -split-input-file -pass-pipeline="builtin.module(mlprogram-pipeline-globals)" --allow-unregistered-dialect %s2 3// CHECK-LABEL: @global_variable4ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>5 6// CHECK-LABEL: @global_double_load7func.func @global_double_load() {8  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable9  // CHECK-NOT: ml_program.global_load @global_variable10  %0 = ml_program.global_load @global_variable : tensor<4xi32>11  %1 = ml_program.global_load @global_variable : tensor<4xi32>12 13  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]], %[[LOAD]])14  %2 = "unregistered.dummy"(%0, %1) : (tensor<4xi32>, tensor<4xi32>) -> (tensor<4xi32>)15 16  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]17  ml_program.global_store @global_variable = %2 : tensor<4xi32>18  func.return19}20 21// -----22 23// CHECK-LABEL: @global_variable24ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>25 26// CHECK-LABEL: @global_double_store27func.func @global_double_store() {28  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable29  %0 = ml_program.global_load @global_variable : tensor<4xi32>30 31  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])32  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)33 34  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]35  ml_program.global_store @global_variable = %1 : tensor<4xi32>36 37  // CHECK-NOT: ml_program.global_store38  ml_program.global_store @global_variable = %1 : tensor<4xi32>39  func.return40}41 42// -----43 44// CHECK-LABEL: @global_variable45ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>46 47// CHECK-LABEL: @global_store_load48func.func @global_store_load() {49  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable50  %0 = ml_program.global_load @global_variable : tensor<4xi32>51 52  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])53  // CHECK: %[[DUMMY2:.+]] = "unregistered.dummy"(%[[DUMMY2]])54  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)55  ml_program.global_store @global_variable = %1 : tensor<4xi32>56  %2 = ml_program.global_load @global_variable : tensor<4xi32>57  %3 = "unregistered.dummy"(%2) : (tensor<4xi32>) -> (tensor<4xi32>)58 59  // CHECK: ml_program.global_store @global_variable %[[DUMMY2]]60  ml_program.global_store @global_variable = %3 : tensor<4xi32>61  func.return62}63 64// -----65 66// CHECK-LABEL: @global_variable67ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>68 69// CHECK-LABEL: @global_store_load_region70func.func @global_store_load_region() {71  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable72  %0 = ml_program.global_load @global_variable : tensor<4xi32>73 74  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])75  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)76 77  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]78  ml_program.global_store @global_variable = %1 : tensor<4xi32>79 80  // CHECK: "unregistered.dummy2"81  "unregistered.dummy2"() ({82    ^bb():83    %cst = arith.constant dense<0> : tensor<4xi32>84    // CHECK: ml_program.global_store @global_variable85    ml_program.global_store @global_variable = %cst : tensor<4xi32>86    "unregistered.terminator"() : () -> ()87  }) : () -> ()88 89  // CHECK: %[[LOAD:.+]] ml_program.global_load @global_variable90  %2 = ml_program.global_load @global_variable : tensor<4xi32>91 92  // CHECK: %[[DUMMY2:.+]] = "unregistered.dummy"(%[[LOAD]])93  %3 = "unregistered.dummy"(%2) : (tensor<4xi32>) -> (tensor<4xi32>)94 95  // CHECK: ml_program.global_store @global_variable %[[DUMMY2]]96  ml_program.global_store @global_variable = %3 : tensor<4xi32>97  func.return98}99 100// -----101 102// CHECK-LABEL: @global_variable103ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>104 105// CHECK-LABEL: @interrupt106func.func @interrupt() {107  %cst = arith.constant dense<0> : tensor<4xi32>108  // CHECK: ml_program.global_store109  ml_program.global_store @global_variable = %cst : tensor<4xi32>110  func.return111}112 113// CHECK-LABEL: @call_global_store114func.func @call_global_store() {115  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable116  %0 = ml_program.global_load @global_variable : tensor<4xi32>117 118  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])119  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)120 121  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]122  ml_program.global_store @global_variable = %1 : tensor<4xi32>123  call @interrupt() : () -> ()124 125  // CHECK: %[[LOAD:.+]] ml_program.global_load @global_variable126  %2 = ml_program.global_load @global_variable : tensor<4xi32>127 128  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])129  %3 = "unregistered.dummy"(%2) : (tensor<4xi32>) -> (tensor<4xi32>)130 131  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]132  ml_program.global_store @global_variable = %3 : tensor<4xi32>133  func.return134}135 136 137// -----138 139// CHECK-LABEL: @global_variable140ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>141 142// CHECK-LABEL: @interrupt_indirect143func.func @interrupt_indirect() {144  %cst = arith.constant dense<0> : tensor<4xi32>145  // CHECK: ml_program.global_store146  ml_program.global_store @global_variable = %cst : tensor<4xi32>147  func.return148}149 150// CHECK-LABEL: @interrupt151func.func @interrupt() {152  call @interrupt_indirect() : () -> ()153  func.return154}155 156// CHECK-LABEL: @call_indirect_store157func.func @call_indirect_store() {158  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable159  %0 = ml_program.global_load @global_variable : tensor<4xi32>160 161  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])162  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)163 164  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]165  ml_program.global_store @global_variable = %1 : tensor<4xi32>166  call @interrupt() : () -> ()167 168  // CHECK: %[[LOAD:.+]] ml_program.global_load @global_variable169  %2 = ml_program.global_load @global_variable : tensor<4xi32>170 171  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])172  %3 = "unregistered.dummy"(%2) : (tensor<4xi32>) -> (tensor<4xi32>)173 174  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]175  ml_program.global_store @global_variable = %3 : tensor<4xi32>176  func.return177}178 179 180// -----181 182// CHECK-LABEL: @global_variable183ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>184 185// CHECK-LABEL: @interrupt_indirect186func.func @interrupt_indirect() -> tensor<4xi32> {187  // CHECK: ml_program.global_load188  %0 = ml_program.global_load @global_variable : tensor<4xi32>189  func.return %0 : tensor<4xi32>190}191 192// CHECK-LABEL: @interrupt193func.func @interrupt() {194  %0 = call @interrupt_indirect() : () -> (tensor<4xi32>)195  "unregistered.dummy"(%0) : (tensor<4xi32>) -> ()196  func.return197}198 199// CHECK-LABEL: @call_indirect_load200func.func @call_indirect_load() {201  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable202  %0 = ml_program.global_load @global_variable : tensor<4xi32>203 204  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])205  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)206 207  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]208  ml_program.global_store @global_variable = %1 : tensor<4xi32>209  call @interrupt() : () -> ()210 211  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])212  %2 = ml_program.global_load @global_variable : tensor<4xi32>213  %3 = "unregistered.dummy"(%2) : (tensor<4xi32>) -> (tensor<4xi32>)214 215  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]216  ml_program.global_store @global_variable = %3 : tensor<4xi32>217  func.return218}219 220// -----221 222// CHECK-LABEL: @global_variable223ml_program.global private mutable @global_variable(dense<4> : tensor<4xi32>) : tensor<4xi32>224 225// CHECK-LABEL: @call_recursive226func.func @call_recursive() {227  // CHECK: %[[LOAD:.+]] = ml_program.global_load @global_variable228  %0 = ml_program.global_load @global_variable : tensor<4xi32>229 230  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])231  %1 = "unregistered.dummy"(%0) : (tensor<4xi32>) -> (tensor<4xi32>)232 233  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]234  ml_program.global_store @global_variable = %1 : tensor<4xi32>235  call @call_recursive() : () -> ()236 237  // CHECK: %[[LOAD:.+]] ml_program.global_load @global_variable238  %2 = ml_program.global_load @global_variable : tensor<4xi32>239 240  // CHECK: %[[DUMMY:.+]] = "unregistered.dummy"(%[[LOAD]])241  %3 = "unregistered.dummy"(%2) : (tensor<4xi32>) -> (tensor<4xi32>)242 243  // CHECK: ml_program.global_store @global_variable %[[DUMMY]]244  ml_program.global_store @global_variable = %3 : tensor<4xi32>245  func.return246}247