-
-
Save Abhishek-Varma/a0c132c00c17f6619e7d86a0eb5681de to your computer and use it in GitHub Desktop.
New Linalg IR - the one with the issue
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#map = affine_map<(d0, d1, d2, d3) -> (0, d1, d2, d3)> | |
#map1 = affine_map<(d0, d1, d2, d3) -> (d0, d1, d2, d3)> | |
#map2 = affine_map<(d0, d1, d2, d3) -> (d1)> | |
#map3 = affine_map<(d0, d1, d2, d3) -> (d0, d1, 0, 0)> | |
#map4 = affine_map<(d0, d1, d2, d3) -> (0, d1, 0, 0)> | |
#map5 = affine_map<(d0, d1, d2) -> (d0, d1, d2)> | |
#map6 = affine_map<(d0, d1, d2) -> (d0, d2, d1)> | |
#map7 = affine_map<(d0, d1) -> (d0, d1)> | |
#map8 = affine_map<(d0, d1) -> (d1, d0)> | |
#map9 = affine_map<(d0, d1, d2) -> (0, d1, d2)> | |
#map10 = affine_map<(d0, d1, d2) -> (d2)> | |
#map11 = affine_map<(d0, d1, d2, d3) -> (d0, d2, d1, d3)> | |
#map12 = affine_map<(d0, d1, d2) -> (d0, d1, 0)> | |
#map13 = affine_map<(d0, d1, d2) -> (0, d1, 0)> | |
#map14 = affine_map<(d0, d1) -> (d1)> | |
module attributes {torch.debug_module_name = "_lambda"} { | |
ml_program.global private mutable @global_seed(dense<0> : tensor<i64>) : tensor<i64> | |
func.func @forward(%arg0: tensor<1x4x64x64xf16>) -> tensor<1x3x512x512xf16> { | |
%cst = arith.constant dense<[1.574710e-02, -2.030940e-02, -4.635620e-02]> : tensor<3xf16> | |
%cst_0 = arith.constant dense_resource<__elided__> : tensor<3x128x3x3xf16> | |
%cst_1 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_2 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_3 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_4 = arith.constant dense_resource<__elided__> : tensor<128x128x3x3xf16> | |
%cst_5 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_6 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_7 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_8 = arith.constant dense_resource<__elided__> : tensor<128x128x3x3xf16> | |
%cst_9 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_10 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_11 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_12 = arith.constant dense_resource<__elided__> : tensor<128x128x3x3xf16> | |
%cst_13 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_14 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_15 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_16 = arith.constant dense_resource<__elided__> : tensor<128x128x3x3xf16> | |
%cst_17 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_18 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_19 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_20 = arith.constant dense_resource<__elided__> : tensor<128x256x1x1xf16> | |
%cst_21 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_22 = arith.constant dense_resource<__elided__> : tensor<128x128x3x3xf16> | |
%cst_23 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_24 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_25 = arith.constant dense_resource<__elided__> : tensor<128xf16> | |
%cst_26 = arith.constant dense_resource<__elided__> : tensor<128x256x3x3xf16> | |
%cst_27 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_28 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_29 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_30 = arith.constant dense_resource<__elided__> : tensor<256x256x3x3xf16> | |
%cst_31 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_32 = arith.constant dense_resource<__elided__> : tensor<256x256x3x3xf16> | |
%cst_33 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_34 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_35 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_36 = arith.constant dense_resource<__elided__> : tensor<256x256x3x3xf16> | |
%cst_37 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_38 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_39 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_40 = arith.constant dense_resource<__elided__> : tensor<256x256x3x3xf16> | |
%cst_41 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_42 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_43 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_44 = arith.constant dense_resource<__elided__> : tensor<256x256x3x3xf16> | |
%cst_45 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_46 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_47 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_48 = arith.constant dense_resource<__elided__> : tensor<256x512x1x1xf16> | |
%cst_49 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_50 = arith.constant dense_resource<__elided__> : tensor<256x256x3x3xf16> | |
%cst_51 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_52 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_53 = arith.constant dense_resource<__elided__> : tensor<256xf16> | |
%cst_54 = arith.constant dense_resource<__elided__> : tensor<256x512x3x3xf16> | |
%cst_55 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_56 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_57 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_58 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_59 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_60 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_61 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_62 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_63 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_64 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_65 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_66 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_67 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_68 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_69 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_70 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_71 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_72 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_73 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_74 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_75 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_76 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_77 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_78 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_79 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_80 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_81 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_82 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_83 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_84 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_85 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_86 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_87 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_88 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_89 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_90 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_91 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_92 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_93 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_94 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_95 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_96 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_97 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_98 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_99 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_100 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_101 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_102 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_103 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_104 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_105 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_106 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_107 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_108 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_109 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_110 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_111 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_112 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_113 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_114 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_115 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_116 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_117 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_118 = arith.constant dense_resource<__elided__> : tensor<512x512xf16> | |
%cst_119 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_120 = arith.constant dense_resource<__elided__> : tensor<512x512xf16> | |
%cst_121 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_122 = arith.constant dense_resource<__elided__> : tensor<512x512xf16> | |
%cst_123 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_124 = arith.constant dense_resource<__elided__> : tensor<512x512xf16> | |
%cst_125 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_126 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_127 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_128 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_129 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_130 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_131 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_132 = arith.constant dense_resource<__elided__> : tensor<512x512x3x3xf16> | |
%cst_133 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_134 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_135 = arith.constant dense_resource<__elided__> : tensor<512xf16> | |
%cst_136 = arith.constant dense_resource<__elided__> : tensor<512x4x3x3xf16> | |
%cst_137 = arith.constant dense<[3.207400e-02, -8.428960e-02, -2.432860e-01, 1.315920e-01]> : tensor<4xf16> | |
%cst_138 = arith.constant dense_resource<__elided__> : tensor<4x4x1x1xf16> | |
%cst_139 = arith.constant 0.000000e+00 : f16 | |
%cst_140 = arith.constant 0.000000e+00 : f32 | |
%cst_141 = arith.constant 1.000000e+00 : f16 | |
%cst_142 = arith.constant -6.550400e+04 : f16 | |
%cst_143 = arith.constant 0.000000e+00 : f64 | |
%cst_144 = arith.constant 5.4899807850672522 : f64 | |
%cst_145 = arith.constant 9.9999999999999995E-7 : f64 | |
%cst_146 = arith.constant 0.044194173824159216 : f64 | |
%cst_147 = arith.constant 6.553600e+04 : f64 | |
%cst_148 = arith.constant 6.553600e+04 : f32 | |
%cst_149 = arith.constant 2.621440e+05 : f64 | |
%cst_150 = arith.constant 2.621440e+05 : f32 | |
%cst_151 = arith.constant 0x4130000000000000 : f64 | |
%cst_152 = arith.constant 0x49800000 : f32 | |
%cst_153 = arith.constant 5.242880e+05 : f64 | |
%cst_154 = arith.constant 5.242880e+05 : f32 | |
%cst_155 = arith.constant 0x4140000000000000 : f64 | |
%cst_156 = arith.constant 0x4A000000 : f32 | |
%c0_i64 = arith.constant 0 : i64 | |
%c0 = arith.constant 0 : index | |
%c1 = arith.constant 1 : index | |
%cst_157 = arith.constant 2.000000e+00 : f16 | |
%cst_158 = arith.constant 5.000000e-01 : f16 | |
%cst_159 = arith.constant 2.550000e+02 : f16 | |
%c2 = arith.constant 2 : index | |
%0 = tensor.empty() : tensor<1x4x64x64xf16> | |
%1 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%arg0 : tensor<1x4x64x64xf16>) outs(%0 : tensor<1x4x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_144 : f64 to f16 | |
%879 = arith.mulf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x4x64x64xf16> | |
%2 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_137 : tensor<4xf16>) outs(%0 : tensor<1x4x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x4x64x64xf16> | |
%3 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%1, %cst_138 : tensor<1x4x64x64xf16>, tensor<4x4x1x1xf16>) outs(%2 : tensor<1x4x64x64xf16>) -> tensor<1x4x64x64xf16> | |
%padded = tensor.pad %3 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x4x64x64xf16> to tensor<1x4x66x66xf16> | |
%4 = tensor.empty() : tensor<1x512x64x64xf16> | |
%5 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_135 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%6 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded, %cst_136 : tensor<1x4x66x66xf16>, tensor<512x4x3x3xf16>) outs(%5 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%collapsed = tensor.collapse_shape %6 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded = tensor.expand_shape %collapsed [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%7 = tensor.empty() : tensor<1x32x16x4096xf32> | |
%8 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%9 = tensor.empty() : tensor<1x32x16x4096xf64> | |
%10 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%8 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%11 = tensor.empty() : tensor<1x32x1x1xf64> | |
%12 = linalg.fill ins(%cst_143 : f64) outs(%11 : tensor<1x32x1x1xf64>) -> tensor<1x32x1x1xf64> | |
%13 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%10 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%14 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%13 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%15 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%10, %14 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%16 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%15, %15 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%17 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%16 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%18 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%17 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%19 = tensor.empty() : tensor<1x32x1x1xf32> | |
%20 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%18 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%21 = linalg.fill ins(%cst_140 : f32) outs(%19 : tensor<1x32x1x1xf32>) -> tensor<1x32x1x1xf32> | |
%22 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%8 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%23 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%22 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%24 = tensor.empty() : tensor<1x32x1x1xf16> | |
%25 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%20 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%26 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%25 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%27 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%23 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%28 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%27 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%29 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%26 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%30 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%29 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%31 = tensor.empty() : tensor<1x32x16x4096xf16> | |
%32 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded, %28 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%33 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%32, %30 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_160 = tensor.collapse_shape %33 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_161 = tensor.expand_shape %collapsed_160 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_162 = tensor.expand_shape %cst_134 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_163 = tensor.expand_shape %cst_133 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%34 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_161, %expanded_163 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%35 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%34, %expanded_162 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%36 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%35 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%37 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%36, %35 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_164 = tensor.pad %37 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%38 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_131 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%39 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_164, %cst_132 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%38 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%collapsed_165 = tensor.collapse_shape %39 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_166 = tensor.expand_shape %collapsed_165 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%40 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_166 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%41 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%40 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%42 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%41 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%43 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%42 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%44 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%41, %43 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%45 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%44, %44 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%46 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%45 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%47 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%46 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%48 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%47 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%49 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%40 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%50 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%49 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%51 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%48 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%52 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%51 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%53 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%50 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%54 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%53 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%55 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%52 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%56 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%55 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%57 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_166, %54 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%58 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%57, %56 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_167 = tensor.collapse_shape %58 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_168 = tensor.expand_shape %collapsed_167 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_169 = tensor.expand_shape %cst_130 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_170 = tensor.expand_shape %cst_129 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%59 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_168, %expanded_170 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%60 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%59, %expanded_169 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%61 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%60 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%62 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%61, %60 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_171 = tensor.pad %62 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%63 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_127 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%64 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_171, %cst_128 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%63 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%65 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%6, %64 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%66 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%65 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%collapsed_172 = tensor.collapse_shape %66 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_173 = tensor.expand_shape %collapsed_172 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%67 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_173 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%68 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%67 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%69 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%68 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%70 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%69 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%71 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%68, %70 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%72 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%71, %71 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%73 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%72 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%74 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%73 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%75 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%74 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%76 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%67 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%77 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%76 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%78 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%75 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%79 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%78 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%80 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%77 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%81 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%80 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%82 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%79 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%83 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%82 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%84 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_173, %81 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%85 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%84, %83 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_174 = tensor.collapse_shape %85 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_175 = tensor.expand_shape %collapsed_174 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_176 = tensor.expand_shape %cst_126 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_177 = tensor.expand_shape %cst_125 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%86 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_175, %expanded_177 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%87 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%86, %expanded_176 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%collapsed_178 = tensor.collapse_shape %87 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%88 = tensor.empty() : tensor<1x4096x512xf16> | |
%89 = linalg.generic {indexing_maps = [#map5, #map6], iterator_types = ["parallel", "parallel", "parallel"]} ins(%collapsed_178 : tensor<1x512x4096xf16>) outs(%88 : tensor<1x4096x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x4096x512xf16> | |
%90 = tensor.empty() : tensor<512x512xf16> | |
%91 = linalg.generic {indexing_maps = [#map7, #map8], iterator_types = ["parallel", "parallel"]} ins(%cst_124 : tensor<512x512xf16>) outs(%90 : tensor<512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<512x512xf16> | |
%collapsed_179 = tensor.collapse_shape %89 [[0, 1], [2]] : tensor<1x4096x512xf16> into tensor<4096x512xf16> | |
%92 = tensor.empty() : tensor<4096x512xf16> | |
%93 = linalg.fill ins(%cst_139 : f16) outs(%92 : tensor<4096x512xf16>) -> tensor<4096x512xf16> | |
%94 = linalg.matmul ins(%collapsed_179, %91 : tensor<4096x512xf16>, tensor<512x512xf16>) outs(%93 : tensor<4096x512xf16>) -> tensor<4096x512xf16> | |
%expanded_180 = tensor.expand_shape %94 [[0, 1], [2]] : tensor<4096x512xf16> into tensor<1x4096x512xf16> | |
%95 = linalg.generic {indexing_maps = [#map9, #map10, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%expanded_180, %cst_123 : tensor<1x4096x512xf16>, tensor<512xf16>) outs(%88 : tensor<1x4096x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x512xf16> | |
%96 = linalg.generic {indexing_maps = [#map7, #map8], iterator_types = ["parallel", "parallel"]} ins(%cst_122 : tensor<512x512xf16>) outs(%90 : tensor<512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<512x512xf16> | |
%97 = linalg.matmul ins(%collapsed_179, %96 : tensor<4096x512xf16>, tensor<512x512xf16>) outs(%93 : tensor<4096x512xf16>) -> tensor<4096x512xf16> | |
%expanded_181 = tensor.expand_shape %97 [[0, 1], [2]] : tensor<4096x512xf16> into tensor<1x4096x512xf16> | |
%98 = linalg.generic {indexing_maps = [#map9, #map10, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%expanded_181, %cst_121 : tensor<1x4096x512xf16>, tensor<512xf16>) outs(%88 : tensor<1x4096x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x512xf16> | |
%99 = linalg.generic {indexing_maps = [#map7, #map8], iterator_types = ["parallel", "parallel"]} ins(%cst_120 : tensor<512x512xf16>) outs(%90 : tensor<512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<512x512xf16> | |
%100 = linalg.matmul ins(%collapsed_179, %99 : tensor<4096x512xf16>, tensor<512x512xf16>) outs(%93 : tensor<4096x512xf16>) -> tensor<4096x512xf16> | |
%expanded_182 = tensor.expand_shape %100 [[0, 1], [2]] : tensor<4096x512xf16> into tensor<1x4096x512xf16> | |
%101 = linalg.generic {indexing_maps = [#map9, #map10, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%expanded_182, %cst_119 : tensor<1x4096x512xf16>, tensor<512xf16>) outs(%88 : tensor<1x4096x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x512xf16> | |
%expanded_183 = tensor.expand_shape %95 [[0], [1], [2, 3]] : tensor<1x4096x512xf16> into tensor<1x4096x1x512xf16> | |
%102 = tensor.empty() : tensor<1x1x4096x512xf16> | |
%103 = linalg.generic {indexing_maps = [#map1, #map11], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_183 : tensor<1x4096x1x512xf16>) outs(%102 : tensor<1x1x4096x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x1x4096x512xf16> | |
%collapsed_184 = tensor.collapse_shape %103 [[0], [1, 2], [3]] : tensor<1x1x4096x512xf16> into tensor<1x4096x512xf16> | |
%expanded_185 = tensor.expand_shape %98 [[0], [1], [2, 3]] : tensor<1x4096x512xf16> into tensor<1x4096x1x512xf16> | |
%104 = linalg.generic {indexing_maps = [#map1, #map11], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_185 : tensor<1x4096x1x512xf16>) outs(%102 : tensor<1x1x4096x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x1x4096x512xf16> | |
%collapsed_186 = tensor.collapse_shape %104 [[0], [1, 2], [3]] : tensor<1x1x4096x512xf16> into tensor<1x4096x512xf16> | |
%expanded_187 = tensor.expand_shape %101 [[0], [1], [2, 3]] : tensor<1x4096x512xf16> into tensor<1x4096x1x512xf16> | |
%105 = linalg.generic {indexing_maps = [#map1, #map11], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_187 : tensor<1x4096x1x512xf16>) outs(%102 : tensor<1x1x4096x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x1x4096x512xf16> | |
%collapsed_188 = tensor.collapse_shape %105 [[0], [1, 2], [3]] : tensor<1x1x4096x512xf16> into tensor<1x4096x512xf16> | |
%106 = tensor.empty() : tensor<1x4096x4096xf16> | |
%107 = linalg.generic {indexing_maps = [#map9, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%106 : tensor<1x4096x4096xf16>) outs(%106 : tensor<1x4096x4096xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %cst_139 : f16 | |
} -> tensor<1x4096x4096xf16> | |
%108 = tensor.empty() : tensor<1x512x4096xf16> | |
%109 = linalg.generic {indexing_maps = [#map5, #map6], iterator_types = ["parallel", "parallel", "parallel"]} ins(%collapsed_186 : tensor<1x4096x512xf16>) outs(%108 : tensor<1x512x4096xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x4096xf16> | |
%110 = linalg.fill ins(%cst_139 : f16) outs(%106 : tensor<1x4096x4096xf16>) -> tensor<1x4096x4096xf16> | |
%111 = linalg.batch_matmul ins(%collapsed_184, %109 : tensor<1x4096x512xf16>, tensor<1x512x4096xf16>) outs(%110 : tensor<1x4096x4096xf16>) -> tensor<1x4096x4096xf16> | |
%112 = linalg.generic {indexing_maps = [#map9, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%111 : tensor<1x4096x4096xf16>) outs(%106 : tensor<1x4096x4096xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_146 : f64 to f16 | |
%879 = arith.mulf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x4096x4096xf16> | |
%113 = linalg.generic {indexing_maps = [#map9, #map9, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%112, %107 : tensor<1x4096x4096xf16>, tensor<1x4096x4096xf16>) outs(%106 : tensor<1x4096x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in_385, %cst_139 : f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x4096x4096xf16> | |
%114 = tensor.empty() : tensor<1x4096x1xi64> | |
%115 = linalg.fill ins(%c0_i64 : i64) outs(%114 : tensor<1x4096x1xi64>) -> tensor<1x4096x1xi64> | |
%116 = tensor.empty() : tensor<1x4096x1xf16> | |
%117 = linalg.fill ins(%cst_142 : f16) outs(%116 : tensor<1x4096x1xf16>) -> tensor<1x4096x1xf16> | |
%118:2 = linalg.generic {indexing_maps = [#map5, #map12, #map12], iterator_types = ["parallel", "parallel", "reduction"]} ins(%113 : tensor<1x4096x4096xf16>) outs(%117, %115 : tensor<1x4096x1xf16>, tensor<1x4096x1xi64>) { | |
^bb0(%in: f16, %out: f16, %out_385: i64): | |
%878 = linalg.index 2 : index | |
%879 = arith.index_cast %878 : index to i64 | |
%880 = arith.maxf %in, %out : f16 | |
%881 = arith.cmpf ogt, %in, %out : f16 | |
%882 = arith.select %881, %879, %out_385 : i64 | |
linalg.yield %880, %882 : f16, i64 | |
} -> (tensor<1x4096x1xf16>, tensor<1x4096x1xi64>) | |
%119 = linalg.generic {indexing_maps = [#map9, #map13, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%113, %118#0 : tensor<1x4096x4096xf16>, tensor<1x4096x1xf16>) outs(%106 : tensor<1x4096x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x4096xf16> | |
%120 = linalg.generic {indexing_maps = [#map9, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%119 : tensor<1x4096x4096xf16>) outs(%106 : tensor<1x4096x4096xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.exp %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x4096xf16> | |
%121 = linalg.fill ins(%cst_139 : f16) outs(%116 : tensor<1x4096x1xf16>) -> tensor<1x4096x1xf16> | |
%122 = linalg.generic {indexing_maps = [#map5, #map12], iterator_types = ["parallel", "parallel", "reduction"]} ins(%120 : tensor<1x4096x4096xf16>) outs(%121 : tensor<1x4096x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.addf %in, %out : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x1xf16> | |
%123 = linalg.generic {indexing_maps = [#map9, #map13, #map5], iterator_types = ["parallel", "parallel", "parallel"]} ins(%120, %122 : tensor<1x4096x4096xf16>, tensor<1x4096x1xf16>) outs(%106 : tensor<1x4096x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.divf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x4096x4096xf16> | |
%124 = linalg.fill ins(%cst_139 : f16) outs(%88 : tensor<1x4096x512xf16>) -> tensor<1x4096x512xf16> | |
%125 = linalg.batch_matmul ins(%123, %collapsed_188 : tensor<1x4096x4096xf16>, tensor<1x4096x512xf16>) outs(%124 : tensor<1x4096x512xf16>) -> tensor<1x4096x512xf16> | |
%expanded_189 = tensor.expand_shape %125 [[0], [1, 2], [3]] : tensor<1x4096x512xf16> into tensor<1x1x4096x512xf16> | |
%126 = tensor.empty() : tensor<1x4096x1x512xf16> | |
%127 = linalg.generic {indexing_maps = [#map1, #map11], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_189 : tensor<1x1x4096x512xf16>) outs(%126 : tensor<1x4096x1x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x4096x1x512xf16> | |
%128 = linalg.generic {indexing_maps = [#map7, #map8], iterator_types = ["parallel", "parallel"]} ins(%cst_118 : tensor<512x512xf16>) outs(%90 : tensor<512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<512x512xf16> | |
%collapsed_190 = tensor.collapse_shape %127 [[0, 1], [2, 3]] : tensor<1x4096x1x512xf16> into tensor<4096x512xf16> | |
%129 = linalg.matmul ins(%collapsed_190, %128 : tensor<4096x512xf16>, tensor<512x512xf16>) outs(%93 : tensor<4096x512xf16>) -> tensor<4096x512xf16> | |
%130 = linalg.generic {indexing_maps = [#map14, #map7, #map7], iterator_types = ["parallel", "parallel"]} ins(%cst_117, %129 : tensor<512xf16>, tensor<4096x512xf16>) outs(%92 : tensor<4096x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<4096x512xf16> | |
%expanded_191 = tensor.expand_shape %130 [[0, 1], [2]] : tensor<4096x512xf16> into tensor<1x4096x512xf16> | |
%131 = linalg.generic {indexing_maps = [#map5, #map6], iterator_types = ["parallel", "parallel", "parallel"]} ins(%expanded_191 : tensor<1x4096x512xf16>) outs(%108 : tensor<1x512x4096xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x4096xf16> | |
%expanded_192 = tensor.expand_shape %131 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%132 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_192, %66 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%133 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%132 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%134 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%133 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%collapsed_193 = tensor.collapse_shape %134 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_194 = tensor.expand_shape %collapsed_193 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%135 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_194 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%136 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%135 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%137 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%136 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%138 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%137 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%139 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%136, %138 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%140 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%139, %139 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%141 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%140 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%142 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%141 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%143 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%142 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%144 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%135 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%145 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%144 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%146 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%143 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%147 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%146 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%148 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%145 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%149 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%148 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%150 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%147 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%151 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%150 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%152 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_194, %149 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%153 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%152, %151 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_195 = tensor.collapse_shape %153 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_196 = tensor.expand_shape %collapsed_195 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_197 = tensor.expand_shape %cst_116 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_198 = tensor.expand_shape %cst_115 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%154 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_196, %expanded_198 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%155 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%154, %expanded_197 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%156 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%155 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%157 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%156, %155 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_199 = tensor.pad %157 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%158 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_113 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%159 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_199, %cst_114 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%158 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%collapsed_200 = tensor.collapse_shape %159 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_201 = tensor.expand_shape %collapsed_200 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%160 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_201 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%161 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%160 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%162 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%161 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%163 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%162 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%164 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%161, %163 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%165 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%164, %164 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%166 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%165 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%167 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%166 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%168 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%167 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%169 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%160 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%170 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%169 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%171 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%168 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%172 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%171 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%173 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%170 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%174 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%173 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%175 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%172 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%176 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%175 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%177 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_201, %174 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%178 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%177, %176 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_202 = tensor.collapse_shape %178 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_203 = tensor.expand_shape %collapsed_202 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_204 = tensor.expand_shape %cst_112 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_205 = tensor.expand_shape %cst_111 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%179 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_203, %expanded_205 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%180 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%179, %expanded_204 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%181 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%180 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%182 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%181, %180 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_206 = tensor.pad %182 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%183 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_109 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%184 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_206, %cst_110 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%183 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%185 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%133, %184 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%186 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%185 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%187 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%186 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%collapsed_207 = tensor.collapse_shape %187 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_208 = tensor.expand_shape %collapsed_207 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%188 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_208 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%189 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%188 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%190 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%189 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%191 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%190 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%192 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%189, %191 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%193 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%192, %192 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%194 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%193 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%195 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%194 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%196 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%195 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%197 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%188 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%198 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%197 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%199 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%196 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%200 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%199 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%201 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%198 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%202 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%201 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%203 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%200 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%204 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%203 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%205 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_208, %202 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%206 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%205, %204 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_209 = tensor.collapse_shape %206 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_210 = tensor.expand_shape %collapsed_209 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_211 = tensor.expand_shape %cst_108 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_212 = tensor.expand_shape %cst_107 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%207 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_210, %expanded_212 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%208 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%207, %expanded_211 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%209 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%208 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%210 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%209, %208 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_213 = tensor.pad %210 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%211 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_105 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%212 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_213, %cst_106 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%211 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%collapsed_214 = tensor.collapse_shape %212 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_215 = tensor.expand_shape %collapsed_214 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%213 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_215 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%214 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%213 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%215 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%214 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%216 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%215 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%217 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%214, %216 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%218 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%217, %217 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%219 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%218 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%220 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%219 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%221 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%220 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%222 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%213 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%223 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%222 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%224 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%221 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%225 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%224 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%226 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%223 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%227 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%226 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%228 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%225 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%229 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%228 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%230 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_215, %227 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%231 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%230, %229 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_216 = tensor.collapse_shape %231 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_217 = tensor.expand_shape %collapsed_216 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_218 = tensor.expand_shape %cst_104 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_219 = tensor.expand_shape %cst_103 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%232 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_217, %expanded_219 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%233 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%232, %expanded_218 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%234 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%233 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%235 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%234, %233 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_220 = tensor.pad %235 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%236 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_101 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%237 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_220, %cst_102 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%236 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%238 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%186, %237 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%239 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%238 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%240 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%239 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%collapsed_221 = tensor.collapse_shape %240 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_222 = tensor.expand_shape %collapsed_221 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%241 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_222 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%242 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%241 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%243 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%242 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%244 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%243 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%245 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%242, %244 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%246 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%245, %245 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%247 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%246 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%248 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%247 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%249 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%248 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%250 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%241 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%251 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%250 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%252 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%249 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%253 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%252 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%254 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%251 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%255 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%254 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%256 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%253 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%257 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%256 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%258 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_222, %255 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%259 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%258, %257 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_223 = tensor.collapse_shape %259 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_224 = tensor.expand_shape %collapsed_223 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_225 = tensor.expand_shape %cst_100 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_226 = tensor.expand_shape %cst_99 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%260 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_224, %expanded_226 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%261 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%260, %expanded_225 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%262 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%261 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%263 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%262, %261 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_227 = tensor.pad %263 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%264 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_97 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%265 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_227, %cst_98 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%264 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%collapsed_228 = tensor.collapse_shape %265 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_229 = tensor.expand_shape %collapsed_228 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%266 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_229 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%267 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%266 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%268 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%267 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%269 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%268 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%270 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%267, %269 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%271 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%270, %270 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%272 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%271 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%273 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%272 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%274 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%273 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%275 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%266 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%276 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%275 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%277 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%274 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%278 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%277 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%279 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%276 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%280 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%279 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%281 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%278 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%282 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%281 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%283 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_229, %280 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%284 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%283, %282 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_230 = tensor.collapse_shape %284 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_231 = tensor.expand_shape %collapsed_230 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_232 = tensor.expand_shape %cst_96 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_233 = tensor.expand_shape %cst_95 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%285 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_231, %expanded_233 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%286 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%285, %expanded_232 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%287 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%286 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%288 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%287, %286 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_234 = tensor.pad %288 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%289 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_93 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%290 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_234, %cst_94 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%289 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%291 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%239, %290 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%292 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%291 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%293 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%292 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%collapsed_235 = tensor.collapse_shape %293 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_236 = tensor.expand_shape %collapsed_235 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%294 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_236 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%295 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%294 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%296 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%295 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%297 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%296 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%298 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%295, %297 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%299 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%298, %298 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%300 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%299 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%301 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%300 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%302 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%301 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%303 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%294 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%304 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%303 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%305 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%302 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%306 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%305 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%307 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%304 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%308 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%307 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%309 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%306 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%310 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%309 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%311 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_236, %308 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%312 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%311, %310 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_237 = tensor.collapse_shape %312 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_238 = tensor.expand_shape %collapsed_237 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_239 = tensor.expand_shape %cst_92 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_240 = tensor.expand_shape %cst_91 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%313 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_238, %expanded_240 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%314 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%313, %expanded_239 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%315 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%314 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%316 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%315, %314 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_241 = tensor.pad %316 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%317 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_89 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%318 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_241, %cst_90 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%317 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%collapsed_242 = tensor.collapse_shape %318 [[0], [1], [2, 3]] : tensor<1x512x64x64xf16> into tensor<1x512x4096xf16> | |
%expanded_243 = tensor.expand_shape %collapsed_242 [[0], [1, 2], [3]] : tensor<1x512x4096xf16> into tensor<1x32x16x4096xf16> | |
%319 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_243 : tensor<1x32x16x4096xf16>) outs(%7 : tensor<1x32x16x4096xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x4096xf32> | |
%320 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%319 : tensor<1x32x16x4096xf32>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%321 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%320 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%322 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%321 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%323 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%320, %322 : tensor<1x32x16x4096xf64>, tensor<1x32x1x1xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%324 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%323, %323 : tensor<1x32x16x4096xf64>, tensor<1x32x16x4096xf64>) outs(%9 : tensor<1x32x16x4096xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x4096xf64> | |
%325 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%324 : tensor<1x32x16x4096xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%326 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%325 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_147 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%327 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%326 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%328 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%319 : tensor<1x32x16x4096xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%329 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%328 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_148 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%330 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%327 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%331 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%330 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%332 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%329 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%333 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%332 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%334 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%331 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%335 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%334 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%336 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_243, %333 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%337 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%336, %335 : tensor<1x32x16x4096xf16>, tensor<1x32x1x1xf16>) outs(%31 : tensor<1x32x16x4096xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x4096xf16> | |
%collapsed_244 = tensor.collapse_shape %337 [[0], [1, 2], [3]] : tensor<1x32x16x4096xf16> into tensor<1x512x4096xf16> | |
%expanded_245 = tensor.expand_shape %collapsed_244 [[0], [1], [2, 3]] : tensor<1x512x4096xf16> into tensor<1x512x64x64xf16> | |
%expanded_246 = tensor.expand_shape %cst_88 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_247 = tensor.expand_shape %cst_87 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%338 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_245, %expanded_247 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%339 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%338, %expanded_246 : tensor<1x512x64x64xf16>, tensor<1x512x1x1xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%340 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%339 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%341 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%340, %339 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%padded_248 = tensor.pad %341 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x64x64xf16> to tensor<1x512x66x66xf16> | |
%342 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_85 : tensor<512xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%343 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_248, %cst_86 : tensor<1x512x66x66xf16>, tensor<512x512x3x3xf16>) outs(%342 : tensor<1x512x64x64xf16>) -> tensor<1x512x64x64xf16> | |
%344 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%292, %343 : tensor<1x512x64x64xf16>, tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x64x64xf16> | |
%345 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%344 : tensor<1x512x64x64xf16>) outs(%4 : tensor<1x512x64x64xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x64x64xf16> | |
%346 = tensor.empty() : tensor<1x512x128x128xf16> | |
%347 = linalg.generic {indexing_maps = [#map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%out: f16): | |
%878 = linalg.index 0 : index | |
%879 = linalg.index 1 : index | |
%880 = linalg.index 2 : index | |
%881 = linalg.index 3 : index | |
%882 = arith.floordivsi %880, %c2 : index | |
%883 = arith.floordivsi %881, %c2 : index | |
%extracted = tensor.extract %345[%878, %879, %882, %883] : tensor<1x512x64x64xf16> | |
linalg.yield %extracted : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_249 = tensor.pad %347 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%348 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_83 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%349 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_249, %cst_84 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%348 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%collapsed_250 = tensor.collapse_shape %349 [[0], [1], [2, 3]] : tensor<1x512x128x128xf16> into tensor<1x512x16384xf16> | |
%expanded_251 = tensor.expand_shape %collapsed_250 [[0], [1, 2], [3]] : tensor<1x512x16384xf16> into tensor<1x32x16x16384xf16> | |
%350 = tensor.empty() : tensor<1x32x16x16384xf32> | |
%351 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_251 : tensor<1x32x16x16384xf16>) outs(%350 : tensor<1x32x16x16384xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x16384xf32> | |
%352 = tensor.empty() : tensor<1x32x16x16384xf64> | |
%353 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%351 : tensor<1x32x16x16384xf32>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%354 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%353 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%355 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%354 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%356 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%353, %355 : tensor<1x32x16x16384xf64>, tensor<1x32x1x1xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%357 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%356, %356 : tensor<1x32x16x16384xf64>, tensor<1x32x16x16384xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%358 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%357 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%359 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%358 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%360 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%359 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%361 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%351 : tensor<1x32x16x16384xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%362 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%361 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_150 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%363 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%360 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%364 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%363 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%365 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%362 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%366 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%365 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%367 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%364 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%368 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%367 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%369 = tensor.empty() : tensor<1x32x16x16384xf16> | |
%370 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_251, %366 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%371 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%370, %368 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%collapsed_252 = tensor.collapse_shape %371 [[0], [1, 2], [3]] : tensor<1x32x16x16384xf16> into tensor<1x512x16384xf16> | |
%expanded_253 = tensor.expand_shape %collapsed_252 [[0], [1], [2, 3]] : tensor<1x512x16384xf16> into tensor<1x512x128x128xf16> | |
%expanded_254 = tensor.expand_shape %cst_82 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_255 = tensor.expand_shape %cst_81 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%372 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_253, %expanded_255 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%373 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%372, %expanded_254 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%374 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%373 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%375 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%374, %373 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_256 = tensor.pad %375 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%376 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_79 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%377 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_256, %cst_80 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%376 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%collapsed_257 = tensor.collapse_shape %377 [[0], [1], [2, 3]] : tensor<1x512x128x128xf16> into tensor<1x512x16384xf16> | |
%expanded_258 = tensor.expand_shape %collapsed_257 [[0], [1, 2], [3]] : tensor<1x512x16384xf16> into tensor<1x32x16x16384xf16> | |
%378 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_258 : tensor<1x32x16x16384xf16>) outs(%350 : tensor<1x32x16x16384xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x16384xf32> | |
%379 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%378 : tensor<1x32x16x16384xf32>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%380 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%379 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%381 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%380 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%382 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%379, %381 : tensor<1x32x16x16384xf64>, tensor<1x32x1x1xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%383 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%382, %382 : tensor<1x32x16x16384xf64>, tensor<1x32x16x16384xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%384 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%383 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%385 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%384 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%386 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%385 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%387 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%378 : tensor<1x32x16x16384xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%388 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%387 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_150 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%389 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%386 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%390 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%389 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%391 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%388 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%392 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%391 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%393 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%390 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%394 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%393 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%395 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_258, %392 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%396 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%395, %394 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%collapsed_259 = tensor.collapse_shape %396 [[0], [1, 2], [3]] : tensor<1x32x16x16384xf16> into tensor<1x512x16384xf16> | |
%expanded_260 = tensor.expand_shape %collapsed_259 [[0], [1], [2, 3]] : tensor<1x512x16384xf16> into tensor<1x512x128x128xf16> | |
%expanded_261 = tensor.expand_shape %cst_78 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_262 = tensor.expand_shape %cst_77 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%397 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_260, %expanded_262 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%398 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%397, %expanded_261 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%399 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%398 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%400 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%399, %398 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_263 = tensor.pad %400 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%401 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_75 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%402 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_263, %cst_76 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%401 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%403 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%349, %402 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%404 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%403 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%collapsed_264 = tensor.collapse_shape %404 [[0], [1], [2, 3]] : tensor<1x512x128x128xf16> into tensor<1x512x16384xf16> | |
%expanded_265 = tensor.expand_shape %collapsed_264 [[0], [1, 2], [3]] : tensor<1x512x16384xf16> into tensor<1x32x16x16384xf16> | |
%405 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_265 : tensor<1x32x16x16384xf16>) outs(%350 : tensor<1x32x16x16384xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x16384xf32> | |
%406 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%405 : tensor<1x32x16x16384xf32>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%407 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%406 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%408 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%407 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%409 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%406, %408 : tensor<1x32x16x16384xf64>, tensor<1x32x1x1xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%410 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%409, %409 : tensor<1x32x16x16384xf64>, tensor<1x32x16x16384xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%411 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%410 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%412 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%411 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%413 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%412 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%414 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%405 : tensor<1x32x16x16384xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%415 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%414 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_150 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%416 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%413 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%417 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%416 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%418 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%415 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%419 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%418 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%420 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%417 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%421 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%420 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%422 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_265, %419 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%423 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%422, %421 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%collapsed_266 = tensor.collapse_shape %423 [[0], [1, 2], [3]] : tensor<1x32x16x16384xf16> into tensor<1x512x16384xf16> | |
%expanded_267 = tensor.expand_shape %collapsed_266 [[0], [1], [2, 3]] : tensor<1x512x16384xf16> into tensor<1x512x128x128xf16> | |
%expanded_268 = tensor.expand_shape %cst_74 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_269 = tensor.expand_shape %cst_73 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%424 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_267, %expanded_269 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%425 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%424, %expanded_268 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%426 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%425 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%427 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%426, %425 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_270 = tensor.pad %427 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%428 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_71 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%429 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_270, %cst_72 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%428 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%collapsed_271 = tensor.collapse_shape %429 [[0], [1], [2, 3]] : tensor<1x512x128x128xf16> into tensor<1x512x16384xf16> | |
%expanded_272 = tensor.expand_shape %collapsed_271 [[0], [1, 2], [3]] : tensor<1x512x16384xf16> into tensor<1x32x16x16384xf16> | |
%430 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_272 : tensor<1x32x16x16384xf16>) outs(%350 : tensor<1x32x16x16384xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x16384xf32> | |
%431 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%430 : tensor<1x32x16x16384xf32>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%432 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%431 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%433 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%432 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%434 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%431, %433 : tensor<1x32x16x16384xf64>, tensor<1x32x1x1xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%435 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%434, %434 : tensor<1x32x16x16384xf64>, tensor<1x32x16x16384xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%436 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%435 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%437 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%436 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%438 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%437 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%439 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%430 : tensor<1x32x16x16384xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%440 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%439 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_150 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%441 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%438 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%442 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%441 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%443 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%440 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%444 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%443 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%445 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%442 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%446 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%445 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%447 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_272, %444 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%448 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%447, %446 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%collapsed_273 = tensor.collapse_shape %448 [[0], [1, 2], [3]] : tensor<1x32x16x16384xf16> into tensor<1x512x16384xf16> | |
%expanded_274 = tensor.expand_shape %collapsed_273 [[0], [1], [2, 3]] : tensor<1x512x16384xf16> into tensor<1x512x128x128xf16> | |
%expanded_275 = tensor.expand_shape %cst_70 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_276 = tensor.expand_shape %cst_69 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%449 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_274, %expanded_276 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%450 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%449, %expanded_275 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%451 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%450 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%452 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%451, %450 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_277 = tensor.pad %452 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%453 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_67 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%454 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_277, %cst_68 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%453 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%455 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%404, %454 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%456 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%455 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%collapsed_278 = tensor.collapse_shape %456 [[0], [1], [2, 3]] : tensor<1x512x128x128xf16> into tensor<1x512x16384xf16> | |
%expanded_279 = tensor.expand_shape %collapsed_278 [[0], [1, 2], [3]] : tensor<1x512x16384xf16> into tensor<1x32x16x16384xf16> | |
%457 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_279 : tensor<1x32x16x16384xf16>) outs(%350 : tensor<1x32x16x16384xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x16384xf32> | |
%458 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%457 : tensor<1x32x16x16384xf32>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%459 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%458 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%460 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%459 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%461 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%458, %460 : tensor<1x32x16x16384xf64>, tensor<1x32x1x1xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%462 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%461, %461 : tensor<1x32x16x16384xf64>, tensor<1x32x16x16384xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%463 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%462 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%464 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%463 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%465 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%464 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%466 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%457 : tensor<1x32x16x16384xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%467 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%466 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_150 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%468 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%465 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%469 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%468 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%470 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%467 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%471 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%470 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%472 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%469 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%473 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%472 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%474 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_279, %471 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%475 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%474, %473 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%collapsed_280 = tensor.collapse_shape %475 [[0], [1, 2], [3]] : tensor<1x32x16x16384xf16> into tensor<1x512x16384xf16> | |
%expanded_281 = tensor.expand_shape %collapsed_280 [[0], [1], [2, 3]] : tensor<1x512x16384xf16> into tensor<1x512x128x128xf16> | |
%expanded_282 = tensor.expand_shape %cst_66 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_283 = tensor.expand_shape %cst_65 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%476 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_281, %expanded_283 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%477 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%476, %expanded_282 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%478 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%477 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%479 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%478, %477 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_284 = tensor.pad %479 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%480 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_63 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%481 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_284, %cst_64 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%480 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%collapsed_285 = tensor.collapse_shape %481 [[0], [1], [2, 3]] : tensor<1x512x128x128xf16> into tensor<1x512x16384xf16> | |
%expanded_286 = tensor.expand_shape %collapsed_285 [[0], [1, 2], [3]] : tensor<1x512x16384xf16> into tensor<1x32x16x16384xf16> | |
%482 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_286 : tensor<1x32x16x16384xf16>) outs(%350 : tensor<1x32x16x16384xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x16384xf32> | |
%483 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%482 : tensor<1x32x16x16384xf32>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%484 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%483 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%485 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%484 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%486 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%483, %485 : tensor<1x32x16x16384xf64>, tensor<1x32x1x1xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%487 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%486, %486 : tensor<1x32x16x16384xf64>, tensor<1x32x16x16384xf64>) outs(%352 : tensor<1x32x16x16384xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x16384xf64> | |
%488 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%487 : tensor<1x32x16x16384xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%489 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%488 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_149 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%490 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%489 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%491 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%482 : tensor<1x32x16x16384xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%492 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%491 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_150 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%493 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%490 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%494 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%493 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%495 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%492 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%496 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%495 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%497 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%494 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%498 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%497 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%499 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_286, %496 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%500 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%499, %498 : tensor<1x32x16x16384xf16>, tensor<1x32x1x1xf16>) outs(%369 : tensor<1x32x16x16384xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x16384xf16> | |
%collapsed_287 = tensor.collapse_shape %500 [[0], [1, 2], [3]] : tensor<1x32x16x16384xf16> into tensor<1x512x16384xf16> | |
%expanded_288 = tensor.expand_shape %collapsed_287 [[0], [1], [2, 3]] : tensor<1x512x16384xf16> into tensor<1x512x128x128xf16> | |
%expanded_289 = tensor.expand_shape %cst_62 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_290 = tensor.expand_shape %cst_61 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%501 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_288, %expanded_290 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%502 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%501, %expanded_289 : tensor<1x512x128x128xf16>, tensor<1x512x1x1xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%503 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%502 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%504 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%503, %502 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%padded_291 = tensor.pad %504 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x128x128xf16> to tensor<1x512x130x130xf16> | |
%505 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_59 : tensor<512xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%506 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_291, %cst_60 : tensor<1x512x130x130xf16>, tensor<512x512x3x3xf16>) outs(%505 : tensor<1x512x128x128xf16>) -> tensor<1x512x128x128xf16> | |
%507 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%456, %506 : tensor<1x512x128x128xf16>, tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x128x128xf16> | |
%508 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%507 : tensor<1x512x128x128xf16>) outs(%346 : tensor<1x512x128x128xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x128x128xf16> | |
%509 = tensor.empty() : tensor<1x512x256x256xf16> | |
%510 = linalg.generic {indexing_maps = [#map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} outs(%509 : tensor<1x512x256x256xf16>) { | |
^bb0(%out: f16): | |
%878 = linalg.index 0 : index | |
%879 = linalg.index 1 : index | |
%880 = linalg.index 2 : index | |
%881 = linalg.index 3 : index | |
%882 = arith.floordivsi %880, %c2 : index | |
%883 = arith.floordivsi %881, %c2 : index | |
%extracted = tensor.extract %508[%878, %879, %882, %883] : tensor<1x512x128x128xf16> | |
linalg.yield %extracted : f16 | |
} -> tensor<1x512x256x256xf16> | |
%padded_292 = tensor.pad %510 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x256x256xf16> to tensor<1x512x258x258xf16> | |
%511 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_57 : tensor<512xf16>) outs(%509 : tensor<1x512x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x512x256x256xf16> | |
%512 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_292, %cst_58 : tensor<1x512x258x258xf16>, tensor<512x512x3x3xf16>) outs(%511 : tensor<1x512x256x256xf16>) -> tensor<1x512x256x256xf16> | |
%collapsed_293 = tensor.collapse_shape %512 [[0], [1], [2, 3]] : tensor<1x512x256x256xf16> into tensor<1x512x65536xf16> | |
%expanded_294 = tensor.expand_shape %collapsed_293 [[0], [1, 2], [3]] : tensor<1x512x65536xf16> into tensor<1x32x16x65536xf16> | |
%513 = tensor.empty() : tensor<1x32x16x65536xf32> | |
%514 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_294 : tensor<1x32x16x65536xf16>) outs(%513 : tensor<1x32x16x65536xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x16x65536xf32> | |
%515 = tensor.empty() : tensor<1x32x16x65536xf64> | |
%516 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%514 : tensor<1x32x16x65536xf32>) outs(%515 : tensor<1x32x16x65536xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x65536xf64> | |
%517 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%516 : tensor<1x32x16x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%518 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%517 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%519 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%516, %518 : tensor<1x32x16x65536xf64>, tensor<1x32x1x1xf64>) outs(%515 : tensor<1x32x16x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x65536xf64> | |
%520 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%519, %519 : tensor<1x32x16x65536xf64>, tensor<1x32x16x65536xf64>) outs(%515 : tensor<1x32x16x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x16x65536xf64> | |
%521 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%520 : tensor<1x32x16x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%522 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%521 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%523 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%522 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%524 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%514 : tensor<1x32x16x65536xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%525 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%524 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%526 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%523 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%527 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%526 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%528 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%525 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%529 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%528 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%530 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%527 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%531 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%530 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%532 = tensor.empty() : tensor<1x32x16x65536xf16> | |
%533 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_294, %529 : tensor<1x32x16x65536xf16>, tensor<1x32x1x1xf16>) outs(%532 : tensor<1x32x16x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x65536xf16> | |
%534 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%533, %531 : tensor<1x32x16x65536xf16>, tensor<1x32x1x1xf16>) outs(%532 : tensor<1x32x16x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x16x65536xf16> | |
%collapsed_295 = tensor.collapse_shape %534 [[0], [1, 2], [3]] : tensor<1x32x16x65536xf16> into tensor<1x512x65536xf16> | |
%expanded_296 = tensor.expand_shape %collapsed_295 [[0], [1], [2, 3]] : tensor<1x512x65536xf16> into tensor<1x512x256x256xf16> | |
%expanded_297 = tensor.expand_shape %cst_56 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%expanded_298 = tensor.expand_shape %cst_55 [[0, 1, 2, 3]] : tensor<512xf16> into tensor<1x512x1x1xf16> | |
%535 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_296, %expanded_298 : tensor<1x512x256x256xf16>, tensor<1x512x1x1xf16>) outs(%509 : tensor<1x512x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x256x256xf16> | |
%536 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%535, %expanded_297 : tensor<1x512x256x256xf16>, tensor<1x512x1x1xf16>) outs(%509 : tensor<1x512x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x256x256xf16> | |
%537 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%536 : tensor<1x512x256x256xf16>) outs(%509 : tensor<1x512x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x512x256x256xf16> | |
%538 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%537, %536 : tensor<1x512x256x256xf16>, tensor<1x512x256x256xf16>) outs(%509 : tensor<1x512x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x512x256x256xf16> | |
%padded_299 = tensor.pad %538 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x512x256x256xf16> to tensor<1x512x258x258xf16> | |
%539 = tensor.empty() : tensor<1x256x256x256xf16> | |
%540 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_53 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%541 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_299, %cst_54 : tensor<1x512x258x258xf16>, tensor<256x512x3x3xf16>) outs(%540 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%collapsed_300 = tensor.collapse_shape %541 [[0], [1], [2, 3]] : tensor<1x256x256x256xf16> into tensor<1x256x65536xf16> | |
%expanded_301 = tensor.expand_shape %collapsed_300 [[0], [1, 2], [3]] : tensor<1x256x65536xf16> into tensor<1x32x8x65536xf16> | |
%542 = tensor.empty() : tensor<1x32x8x65536xf32> | |
%543 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_301 : tensor<1x32x8x65536xf16>) outs(%542 : tensor<1x32x8x65536xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x8x65536xf32> | |
%544 = tensor.empty() : tensor<1x32x8x65536xf64> | |
%545 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%543 : tensor<1x32x8x65536xf32>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%546 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%545 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%547 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%546 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%548 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%545, %547 : tensor<1x32x8x65536xf64>, tensor<1x32x1x1xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%549 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%548, %548 : tensor<1x32x8x65536xf64>, tensor<1x32x8x65536xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%550 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%549 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%551 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%550 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%552 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%551 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%553 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%543 : tensor<1x32x8x65536xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%554 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%553 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_154 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%555 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%552 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%556 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%555 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%557 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%554 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%558 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%557 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%559 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%556 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%560 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%559 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%561 = tensor.empty() : tensor<1x32x8x65536xf16> | |
%562 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_301, %558 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%563 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%562, %560 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%collapsed_302 = tensor.collapse_shape %563 [[0], [1, 2], [3]] : tensor<1x32x8x65536xf16> into tensor<1x256x65536xf16> | |
%expanded_303 = tensor.expand_shape %collapsed_302 [[0], [1], [2, 3]] : tensor<1x256x65536xf16> into tensor<1x256x256x256xf16> | |
%expanded_304 = tensor.expand_shape %cst_52 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%expanded_305 = tensor.expand_shape %cst_51 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%564 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_303, %expanded_305 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%565 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%564, %expanded_304 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%566 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%565 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%567 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%566, %565 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%padded_306 = tensor.pad %567 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x256x256xf16> to tensor<1x256x258x258xf16> | |
%568 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_49 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%569 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_306, %cst_50 : tensor<1x256x258x258xf16>, tensor<256x256x3x3xf16>) outs(%568 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%570 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_47 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%571 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%512, %cst_48 : tensor<1x512x256x256xf16>, tensor<256x512x1x1xf16>) outs(%570 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%572 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%571, %569 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%573 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%572 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%collapsed_307 = tensor.collapse_shape %573 [[0], [1], [2, 3]] : tensor<1x256x256x256xf16> into tensor<1x256x65536xf16> | |
%expanded_308 = tensor.expand_shape %collapsed_307 [[0], [1, 2], [3]] : tensor<1x256x65536xf16> into tensor<1x32x8x65536xf16> | |
%574 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_308 : tensor<1x32x8x65536xf16>) outs(%542 : tensor<1x32x8x65536xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x8x65536xf32> | |
%575 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%574 : tensor<1x32x8x65536xf32>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%576 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%575 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%577 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%576 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%578 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%575, %577 : tensor<1x32x8x65536xf64>, tensor<1x32x1x1xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%579 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%578, %578 : tensor<1x32x8x65536xf64>, tensor<1x32x8x65536xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%580 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%579 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%581 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%580 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%582 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%581 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%583 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%574 : tensor<1x32x8x65536xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%584 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%583 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_154 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%585 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%582 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%586 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%585 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%587 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%584 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%588 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%587 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%589 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%586 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%590 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%589 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%591 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_308, %588 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%592 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%591, %590 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%collapsed_309 = tensor.collapse_shape %592 [[0], [1, 2], [3]] : tensor<1x32x8x65536xf16> into tensor<1x256x65536xf16> | |
%expanded_310 = tensor.expand_shape %collapsed_309 [[0], [1], [2, 3]] : tensor<1x256x65536xf16> into tensor<1x256x256x256xf16> | |
%expanded_311 = tensor.expand_shape %cst_46 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%expanded_312 = tensor.expand_shape %cst_45 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%593 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_310, %expanded_312 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%594 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%593, %expanded_311 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%595 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%594 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%596 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%595, %594 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%padded_313 = tensor.pad %596 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x256x256xf16> to tensor<1x256x258x258xf16> | |
%597 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_43 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%598 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_313, %cst_44 : tensor<1x256x258x258xf16>, tensor<256x256x3x3xf16>) outs(%597 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%collapsed_314 = tensor.collapse_shape %598 [[0], [1], [2, 3]] : tensor<1x256x256x256xf16> into tensor<1x256x65536xf16> | |
%expanded_315 = tensor.expand_shape %collapsed_314 [[0], [1, 2], [3]] : tensor<1x256x65536xf16> into tensor<1x32x8x65536xf16> | |
%599 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_315 : tensor<1x32x8x65536xf16>) outs(%542 : tensor<1x32x8x65536xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x8x65536xf32> | |
%600 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%599 : tensor<1x32x8x65536xf32>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%601 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%600 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%602 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%601 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%603 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%600, %602 : tensor<1x32x8x65536xf64>, tensor<1x32x1x1xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%604 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%603, %603 : tensor<1x32x8x65536xf64>, tensor<1x32x8x65536xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%605 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%604 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%606 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%605 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%607 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%606 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%608 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%599 : tensor<1x32x8x65536xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%609 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%608 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_154 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%610 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%607 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%611 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%610 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%612 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%609 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%613 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%612 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%614 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%611 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%615 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%614 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%616 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_315, %613 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%617 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%616, %615 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%collapsed_316 = tensor.collapse_shape %617 [[0], [1, 2], [3]] : tensor<1x32x8x65536xf16> into tensor<1x256x65536xf16> | |
%expanded_317 = tensor.expand_shape %collapsed_316 [[0], [1], [2, 3]] : tensor<1x256x65536xf16> into tensor<1x256x256x256xf16> | |
%expanded_318 = tensor.expand_shape %cst_42 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%expanded_319 = tensor.expand_shape %cst_41 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%618 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_317, %expanded_319 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%619 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%618, %expanded_318 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%620 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%619 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%621 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%620, %619 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%padded_320 = tensor.pad %621 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x256x256xf16> to tensor<1x256x258x258xf16> | |
%622 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_39 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%623 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_320, %cst_40 : tensor<1x256x258x258xf16>, tensor<256x256x3x3xf16>) outs(%622 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%624 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%573, %623 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%625 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%624 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%collapsed_321 = tensor.collapse_shape %625 [[0], [1], [2, 3]] : tensor<1x256x256x256xf16> into tensor<1x256x65536xf16> | |
%expanded_322 = tensor.expand_shape %collapsed_321 [[0], [1, 2], [3]] : tensor<1x256x65536xf16> into tensor<1x32x8x65536xf16> | |
%626 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_322 : tensor<1x32x8x65536xf16>) outs(%542 : tensor<1x32x8x65536xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x8x65536xf32> | |
%627 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%626 : tensor<1x32x8x65536xf32>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%628 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%627 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%629 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%628 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%630 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%627, %629 : tensor<1x32x8x65536xf64>, tensor<1x32x1x1xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%631 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%630, %630 : tensor<1x32x8x65536xf64>, tensor<1x32x8x65536xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%632 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%631 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%633 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%632 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%634 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%633 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%635 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%626 : tensor<1x32x8x65536xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%636 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%635 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_154 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%637 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%634 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%638 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%637 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%639 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%636 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%640 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%639 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%641 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%638 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%642 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%641 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%643 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_322, %640 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%644 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%643, %642 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%collapsed_323 = tensor.collapse_shape %644 [[0], [1, 2], [3]] : tensor<1x32x8x65536xf16> into tensor<1x256x65536xf16> | |
%expanded_324 = tensor.expand_shape %collapsed_323 [[0], [1], [2, 3]] : tensor<1x256x65536xf16> into tensor<1x256x256x256xf16> | |
%expanded_325 = tensor.expand_shape %cst_38 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%expanded_326 = tensor.expand_shape %cst_37 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%645 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_324, %expanded_326 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%646 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%645, %expanded_325 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%647 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%646 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%648 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%647, %646 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%padded_327 = tensor.pad %648 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x256x256xf16> to tensor<1x256x258x258xf16> | |
%649 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_35 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%650 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_327, %cst_36 : tensor<1x256x258x258xf16>, tensor<256x256x3x3xf16>) outs(%649 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%collapsed_328 = tensor.collapse_shape %650 [[0], [1], [2, 3]] : tensor<1x256x256x256xf16> into tensor<1x256x65536xf16> | |
%expanded_329 = tensor.expand_shape %collapsed_328 [[0], [1, 2], [3]] : tensor<1x256x65536xf16> into tensor<1x32x8x65536xf16> | |
%651 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_329 : tensor<1x32x8x65536xf16>) outs(%542 : tensor<1x32x8x65536xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x8x65536xf32> | |
%652 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%651 : tensor<1x32x8x65536xf32>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%653 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%652 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%654 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%653 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%655 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%652, %654 : tensor<1x32x8x65536xf64>, tensor<1x32x1x1xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%656 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%655, %655 : tensor<1x32x8x65536xf64>, tensor<1x32x8x65536xf64>) outs(%544 : tensor<1x32x8x65536xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x65536xf64> | |
%657 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%656 : tensor<1x32x8x65536xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%658 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%657 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_153 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%659 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%658 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%660 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%651 : tensor<1x32x8x65536xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%661 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%660 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_154 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%662 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%659 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%663 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%662 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%664 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%661 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%665 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%664 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%666 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%663 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%667 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%666 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%668 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_329, %665 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%669 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%668, %667 : tensor<1x32x8x65536xf16>, tensor<1x32x1x1xf16>) outs(%561 : tensor<1x32x8x65536xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x65536xf16> | |
%collapsed_330 = tensor.collapse_shape %669 [[0], [1, 2], [3]] : tensor<1x32x8x65536xf16> into tensor<1x256x65536xf16> | |
%expanded_331 = tensor.expand_shape %collapsed_330 [[0], [1], [2, 3]] : tensor<1x256x65536xf16> into tensor<1x256x256x256xf16> | |
%expanded_332 = tensor.expand_shape %cst_34 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%expanded_333 = tensor.expand_shape %cst_33 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%670 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_331, %expanded_333 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%671 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%670, %expanded_332 : tensor<1x256x256x256xf16>, tensor<1x256x1x1xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%672 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%671 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%673 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%672, %671 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%padded_334 = tensor.pad %673 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x256x256xf16> to tensor<1x256x258x258xf16> | |
%674 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_31 : tensor<256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%675 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_334, %cst_32 : tensor<1x256x258x258xf16>, tensor<256x256x3x3xf16>) outs(%674 : tensor<1x256x256x256xf16>) -> tensor<1x256x256x256xf16> | |
%676 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%625, %675 : tensor<1x256x256x256xf16>, tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x256x256xf16> | |
%677 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%676 : tensor<1x256x256x256xf16>) outs(%539 : tensor<1x256x256x256xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x256x256xf16> | |
%678 = tensor.empty() : tensor<1x256x512x512xf16> | |
%679 = linalg.generic {indexing_maps = [#map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} outs(%678 : tensor<1x256x512x512xf16>) { | |
^bb0(%out: f16): | |
%878 = linalg.index 0 : index | |
%879 = linalg.index 1 : index | |
%880 = linalg.index 2 : index | |
%881 = linalg.index 3 : index | |
%882 = arith.floordivsi %880, %c2 : index | |
%883 = arith.floordivsi %881, %c2 : index | |
%extracted = tensor.extract %677[%878, %879, %882, %883] : tensor<1x256x256x256xf16> | |
linalg.yield %extracted : f16 | |
} -> tensor<1x256x512x512xf16> | |
%padded_335 = tensor.pad %679 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x512x512xf16> to tensor<1x256x514x514xf16> | |
%680 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_29 : tensor<256xf16>) outs(%678 : tensor<1x256x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x256x512x512xf16> | |
%681 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_335, %cst_30 : tensor<1x256x514x514xf16>, tensor<256x256x3x3xf16>) outs(%680 : tensor<1x256x512x512xf16>) -> tensor<1x256x512x512xf16> | |
%collapsed_336 = tensor.collapse_shape %681 [[0], [1], [2, 3]] : tensor<1x256x512x512xf16> into tensor<1x256x262144xf16> | |
%expanded_337 = tensor.expand_shape %collapsed_336 [[0], [1, 2], [3]] : tensor<1x256x262144xf16> into tensor<1x32x8x262144xf16> | |
%682 = tensor.empty() : tensor<1x32x8x262144xf32> | |
%683 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_337 : tensor<1x32x8x262144xf16>) outs(%682 : tensor<1x32x8x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x8x262144xf32> | |
%684 = tensor.empty() : tensor<1x32x8x262144xf64> | |
%685 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%683 : tensor<1x32x8x262144xf32>) outs(%684 : tensor<1x32x8x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x262144xf64> | |
%686 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%685 : tensor<1x32x8x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%687 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%686 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_155 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%688 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%685, %687 : tensor<1x32x8x262144xf64>, tensor<1x32x1x1xf64>) outs(%684 : tensor<1x32x8x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x262144xf64> | |
%689 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%688, %688 : tensor<1x32x8x262144xf64>, tensor<1x32x8x262144xf64>) outs(%684 : tensor<1x32x8x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x8x262144xf64> | |
%690 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%689 : tensor<1x32x8x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%691 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%690 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_155 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%692 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%691 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%693 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%683 : tensor<1x32x8x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%694 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%693 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_156 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%695 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%692 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%696 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%695 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%697 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%694 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%698 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%697 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%699 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%696 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%700 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%699 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%701 = tensor.empty() : tensor<1x32x8x262144xf16> | |
%702 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_337, %698 : tensor<1x32x8x262144xf16>, tensor<1x32x1x1xf16>) outs(%701 : tensor<1x32x8x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x262144xf16> | |
%703 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%702, %700 : tensor<1x32x8x262144xf16>, tensor<1x32x1x1xf16>) outs(%701 : tensor<1x32x8x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x8x262144xf16> | |
%collapsed_338 = tensor.collapse_shape %703 [[0], [1, 2], [3]] : tensor<1x32x8x262144xf16> into tensor<1x256x262144xf16> | |
%expanded_339 = tensor.expand_shape %collapsed_338 [[0], [1], [2, 3]] : tensor<1x256x262144xf16> into tensor<1x256x512x512xf16> | |
%expanded_340 = tensor.expand_shape %cst_28 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%expanded_341 = tensor.expand_shape %cst_27 [[0, 1, 2, 3]] : tensor<256xf16> into tensor<1x256x1x1xf16> | |
%704 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_339, %expanded_341 : tensor<1x256x512x512xf16>, tensor<1x256x1x1xf16>) outs(%678 : tensor<1x256x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x512x512xf16> | |
%705 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%704, %expanded_340 : tensor<1x256x512x512xf16>, tensor<1x256x1x1xf16>) outs(%678 : tensor<1x256x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x512x512xf16> | |
%706 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%705 : tensor<1x256x512x512xf16>) outs(%678 : tensor<1x256x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x256x512x512xf16> | |
%707 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%706, %705 : tensor<1x256x512x512xf16>, tensor<1x256x512x512xf16>) outs(%678 : tensor<1x256x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x256x512x512xf16> | |
%padded_342 = tensor.pad %707 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x256x512x512xf16> to tensor<1x256x514x514xf16> | |
%708 = tensor.empty() : tensor<1x128x512x512xf16> | |
%709 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_25 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%710 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_342, %cst_26 : tensor<1x256x514x514xf16>, tensor<128x256x3x3xf16>) outs(%709 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%collapsed_343 = tensor.collapse_shape %710 [[0], [1], [2, 3]] : tensor<1x128x512x512xf16> into tensor<1x128x262144xf16> | |
%expanded_344 = tensor.expand_shape %collapsed_343 [[0], [1, 2], [3]] : tensor<1x128x262144xf16> into tensor<1x32x4x262144xf16> | |
%711 = tensor.empty() : tensor<1x32x4x262144xf32> | |
%712 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_344 : tensor<1x32x4x262144xf16>) outs(%711 : tensor<1x32x4x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x4x262144xf32> | |
%713 = tensor.empty() : tensor<1x32x4x262144xf64> | |
%714 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%712 : tensor<1x32x4x262144xf32>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%715 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%714 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%716 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%715 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%717 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%714, %716 : tensor<1x32x4x262144xf64>, tensor<1x32x1x1xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%718 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%717, %717 : tensor<1x32x4x262144xf64>, tensor<1x32x4x262144xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%719 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%718 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%720 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%719 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%721 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%720 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%722 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%712 : tensor<1x32x4x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%723 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%722 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%724 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%721 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%725 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%724 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%726 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%723 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%727 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%726 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%728 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%725 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%729 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%728 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%730 = tensor.empty() : tensor<1x32x4x262144xf16> | |
%731 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_344, %727 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%732 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%731, %729 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%collapsed_345 = tensor.collapse_shape %732 [[0], [1, 2], [3]] : tensor<1x32x4x262144xf16> into tensor<1x128x262144xf16> | |
%expanded_346 = tensor.expand_shape %collapsed_345 [[0], [1], [2, 3]] : tensor<1x128x262144xf16> into tensor<1x128x512x512xf16> | |
%expanded_347 = tensor.expand_shape %cst_24 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%expanded_348 = tensor.expand_shape %cst_23 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%733 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_346, %expanded_348 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%734 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%733, %expanded_347 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%735 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%734 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%736 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%735, %734 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%padded_349 = tensor.pad %736 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x128x512x512xf16> to tensor<1x128x514x514xf16> | |
%737 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_21 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%738 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_349, %cst_22 : tensor<1x128x514x514xf16>, tensor<128x128x3x3xf16>) outs(%737 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%739 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_19 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%740 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%681, %cst_20 : tensor<1x256x512x512xf16>, tensor<128x256x1x1xf16>) outs(%739 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%741 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%740, %738 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%742 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%741 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%collapsed_350 = tensor.collapse_shape %742 [[0], [1], [2, 3]] : tensor<1x128x512x512xf16> into tensor<1x128x262144xf16> | |
%expanded_351 = tensor.expand_shape %collapsed_350 [[0], [1, 2], [3]] : tensor<1x128x262144xf16> into tensor<1x32x4x262144xf16> | |
%743 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_351 : tensor<1x32x4x262144xf16>) outs(%711 : tensor<1x32x4x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x4x262144xf32> | |
%744 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%743 : tensor<1x32x4x262144xf32>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%745 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%744 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%746 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%745 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%747 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%744, %746 : tensor<1x32x4x262144xf64>, tensor<1x32x1x1xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%748 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%747, %747 : tensor<1x32x4x262144xf64>, tensor<1x32x4x262144xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%749 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%748 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%750 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%749 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%751 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%750 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%752 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%743 : tensor<1x32x4x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%753 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%752 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%754 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%751 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%755 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%754 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%756 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%753 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%757 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%756 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%758 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%755 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%759 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%758 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%760 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_351, %757 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%761 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%760, %759 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%collapsed_352 = tensor.collapse_shape %761 [[0], [1, 2], [3]] : tensor<1x32x4x262144xf16> into tensor<1x128x262144xf16> | |
%expanded_353 = tensor.expand_shape %collapsed_352 [[0], [1], [2, 3]] : tensor<1x128x262144xf16> into tensor<1x128x512x512xf16> | |
%expanded_354 = tensor.expand_shape %cst_18 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%expanded_355 = tensor.expand_shape %cst_17 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%762 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_353, %expanded_355 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%763 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%762, %expanded_354 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%764 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%763 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%765 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%764, %763 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%padded_356 = tensor.pad %765 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x128x512x512xf16> to tensor<1x128x514x514xf16> | |
%766 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_15 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%767 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_356, %cst_16 : tensor<1x128x514x514xf16>, tensor<128x128x3x3xf16>) outs(%766 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%collapsed_357 = tensor.collapse_shape %767 [[0], [1], [2, 3]] : tensor<1x128x512x512xf16> into tensor<1x128x262144xf16> | |
%expanded_358 = tensor.expand_shape %collapsed_357 [[0], [1, 2], [3]] : tensor<1x128x262144xf16> into tensor<1x32x4x262144xf16> | |
%768 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_358 : tensor<1x32x4x262144xf16>) outs(%711 : tensor<1x32x4x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x4x262144xf32> | |
%769 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%768 : tensor<1x32x4x262144xf32>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%770 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%769 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%771 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%770 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%772 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%769, %771 : tensor<1x32x4x262144xf64>, tensor<1x32x1x1xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%773 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%772, %772 : tensor<1x32x4x262144xf64>, tensor<1x32x4x262144xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%774 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%773 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%775 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%774 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%776 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%775 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%777 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%768 : tensor<1x32x4x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%778 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%777 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%779 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%776 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%780 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%779 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%781 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%778 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%782 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%781 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%783 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%780 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%784 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%783 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%785 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_358, %782 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%786 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%785, %784 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%collapsed_359 = tensor.collapse_shape %786 [[0], [1, 2], [3]] : tensor<1x32x4x262144xf16> into tensor<1x128x262144xf16> | |
%expanded_360 = tensor.expand_shape %collapsed_359 [[0], [1], [2, 3]] : tensor<1x128x262144xf16> into tensor<1x128x512x512xf16> | |
%expanded_361 = tensor.expand_shape %cst_14 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%expanded_362 = tensor.expand_shape %cst_13 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%787 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_360, %expanded_362 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%788 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%787, %expanded_361 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%789 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%788 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%790 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%789, %788 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%padded_363 = tensor.pad %790 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x128x512x512xf16> to tensor<1x128x514x514xf16> | |
%791 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_11 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%792 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_363, %cst_12 : tensor<1x128x514x514xf16>, tensor<128x128x3x3xf16>) outs(%791 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%793 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%742, %792 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%794 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%793 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%collapsed_364 = tensor.collapse_shape %794 [[0], [1], [2, 3]] : tensor<1x128x512x512xf16> into tensor<1x128x262144xf16> | |
%expanded_365 = tensor.expand_shape %collapsed_364 [[0], [1, 2], [3]] : tensor<1x128x262144xf16> into tensor<1x32x4x262144xf16> | |
%795 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_365 : tensor<1x32x4x262144xf16>) outs(%711 : tensor<1x32x4x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x4x262144xf32> | |
%796 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%795 : tensor<1x32x4x262144xf32>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%797 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%796 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%798 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%797 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%799 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%796, %798 : tensor<1x32x4x262144xf64>, tensor<1x32x1x1xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%800 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%799, %799 : tensor<1x32x4x262144xf64>, tensor<1x32x4x262144xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%801 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%800 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%802 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%801 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%803 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%802 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%804 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%795 : tensor<1x32x4x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%805 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%804 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%806 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%803 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%807 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%806 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%808 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%805 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%809 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%808 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%810 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%807 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%811 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%810 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%812 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_365, %809 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%813 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%812, %811 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%collapsed_366 = tensor.collapse_shape %813 [[0], [1, 2], [3]] : tensor<1x32x4x262144xf16> into tensor<1x128x262144xf16> | |
%expanded_367 = tensor.expand_shape %collapsed_366 [[0], [1], [2, 3]] : tensor<1x128x262144xf16> into tensor<1x128x512x512xf16> | |
%expanded_368 = tensor.expand_shape %cst_10 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%expanded_369 = tensor.expand_shape %cst_9 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%814 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_367, %expanded_369 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%815 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%814, %expanded_368 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%816 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%815 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%817 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%816, %815 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%padded_370 = tensor.pad %817 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x128x512x512xf16> to tensor<1x128x514x514xf16> | |
%818 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_7 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%819 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_370, %cst_8 : tensor<1x128x514x514xf16>, tensor<128x128x3x3xf16>) outs(%818 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%collapsed_371 = tensor.collapse_shape %819 [[0], [1], [2, 3]] : tensor<1x128x512x512xf16> into tensor<1x128x262144xf16> | |
%expanded_372 = tensor.expand_shape %collapsed_371 [[0], [1, 2], [3]] : tensor<1x128x262144xf16> into tensor<1x32x4x262144xf16> | |
%820 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_372 : tensor<1x32x4x262144xf16>) outs(%711 : tensor<1x32x4x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x4x262144xf32> | |
%821 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%820 : tensor<1x32x4x262144xf32>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%822 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%821 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%823 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%822 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%824 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%821, %823 : tensor<1x32x4x262144xf64>, tensor<1x32x1x1xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%825 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%824, %824 : tensor<1x32x4x262144xf64>, tensor<1x32x4x262144xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%826 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%825 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%827 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%826 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%828 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%827 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%829 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%820 : tensor<1x32x4x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%830 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%829 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%831 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%828 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%832 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%831 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%833 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%830 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%834 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%833 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%835 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%832 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%836 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%835 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%837 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_372, %834 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%838 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%837, %836 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%collapsed_373 = tensor.collapse_shape %838 [[0], [1, 2], [3]] : tensor<1x32x4x262144xf16> into tensor<1x128x262144xf16> | |
%expanded_374 = tensor.expand_shape %collapsed_373 [[0], [1], [2, 3]] : tensor<1x128x262144xf16> into tensor<1x128x512x512xf16> | |
%expanded_375 = tensor.expand_shape %cst_6 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%expanded_376 = tensor.expand_shape %cst_5 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%839 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_374, %expanded_376 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%840 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%839, %expanded_375 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%841 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%840 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%842 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%841, %840 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%padded_377 = tensor.pad %842 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x128x512x512xf16> to tensor<1x128x514x514xf16> | |
%843 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst_3 : tensor<128xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%844 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_377, %cst_4 : tensor<1x128x514x514xf16>, tensor<128x128x3x3xf16>) outs(%843 : tensor<1x128x512x512xf16>) -> tensor<1x128x512x512xf16> | |
%845 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%794, %844 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%846 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%845 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x128x512x512xf16> | |
%collapsed_378 = tensor.collapse_shape %846 [[0], [1], [2, 3]] : tensor<1x128x512x512xf16> into tensor<1x128x262144xf16> | |
%expanded_379 = tensor.expand_shape %collapsed_378 [[0], [1, 2], [3]] : tensor<1x128x262144xf16> into tensor<1x32x4x262144xf16> | |
%847 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_379 : tensor<1x32x4x262144xf16>) outs(%711 : tensor<1x32x4x262144xf32>) { | |
^bb0(%in: f16, %out: f32): | |
%878 = arith.extf %in : f16 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x4x262144xf32> | |
%848 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%847 : tensor<1x32x4x262144xf32>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f32, %out: f64): | |
%878 = arith.extf %in : f32 to f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%849 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%848 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%850 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%849 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%851 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%848, %850 : tensor<1x32x4x262144xf64>, tensor<1x32x1x1xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.subf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%852 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%851, %851 : tensor<1x32x4x262144xf64>, tensor<1x32x4x262144xf64>) outs(%713 : tensor<1x32x4x262144xf64>) { | |
^bb0(%in: f64, %in_385: f64, %out: f64): | |
%878 = arith.mulf %in, %in_385 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x4x262144xf64> | |
%853 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%852 : tensor<1x32x4x262144xf64>) outs(%12 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.addf %in, %out : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%854 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%853 : tensor<1x32x1x1xf64>) outs(%11 : tensor<1x32x1x1xf64>) { | |
^bb0(%in: f64, %out: f64): | |
%878 = arith.divf %in, %cst_151 : f64 | |
linalg.yield %878 : f64 | |
} -> tensor<1x32x1x1xf64> | |
%855 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%854 : tensor<1x32x1x1xf64>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f64, %out: f32): | |
%878 = arith.truncf %in : f64 to f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%856 = linalg.generic {indexing_maps = [#map1, #map3], iterator_types = ["parallel", "parallel", "reduction", "reduction"]} ins(%847 : tensor<1x32x4x262144xf32>) outs(%21 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.addf %in, %out : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%857 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%856 : tensor<1x32x1x1xf32>) outs(%19 : tensor<1x32x1x1xf32>) { | |
^bb0(%in: f32, %out: f32): | |
%878 = arith.divf %in, %cst_152 : f32 | |
linalg.yield %878 : f32 | |
} -> tensor<1x32x1x1xf32> | |
%858 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%855 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%859 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%858 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%860 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%857 : tensor<1x32x1x1xf32>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f32, %out: f16): | |
%878 = arith.truncf %in : f32 to f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%861 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%860 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x32x1x1xf16> | |
%862 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%859 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.truncf %cst_145 : f64 to f16 | |
%879 = arith.addf %in, %878 : f16 | |
linalg.yield %879 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%863 = linalg.generic {indexing_maps = [#map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%862 : tensor<1x32x1x1xf16>) outs(%24 : tensor<1x32x1x1xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.rsqrt %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x1x1xf16> | |
%864 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_379, %861 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.subf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%865 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%864, %863 : tensor<1x32x4x262144xf16>, tensor<1x32x1x1xf16>) outs(%730 : tensor<1x32x4x262144xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x32x4x262144xf16> | |
%collapsed_380 = tensor.collapse_shape %865 [[0], [1, 2], [3]] : tensor<1x32x4x262144xf16> into tensor<1x128x262144xf16> | |
%expanded_381 = tensor.expand_shape %collapsed_380 [[0], [1], [2, 3]] : tensor<1x128x262144xf16> into tensor<1x128x512x512xf16> | |
%expanded_382 = tensor.expand_shape %cst_2 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%expanded_383 = tensor.expand_shape %cst_1 [[0, 1, 2, 3]] : tensor<128xf16> into tensor<1x128x1x1xf16> | |
%866 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%expanded_381, %expanded_383 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%867 = linalg.generic {indexing_maps = [#map, #map4, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%866, %expanded_382 : tensor<1x128x512x512xf16>, tensor<1x128x1x1xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.addf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%868 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%867 : tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.negf %in : f16 | |
%879 = math.exp %878 : f16 | |
%880 = arith.addf %879, %cst_141 : f16 | |
%881 = arith.divf %cst_141, %880 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%869 = linalg.generic {indexing_maps = [#map, #map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%868, %867 : tensor<1x128x512x512xf16>, tensor<1x128x512x512xf16>) outs(%708 : tensor<1x128x512x512xf16>) { | |
^bb0(%in: f16, %in_385: f16, %out: f16): | |
%878 = arith.mulf %in, %in_385 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x128x512x512xf16> | |
%padded_384 = tensor.pad %869 low[0, 0, 1, 1] high[0, 0, 1, 1] { | |
^bb0(%arg1: index, %arg2: index, %arg3: index, %arg4: index): | |
tensor.yield %cst_139 : f16 | |
} : tensor<1x128x512x512xf16> to tensor<1x128x514x514xf16> | |
%870 = tensor.empty() : tensor<1x3x512x512xf16> | |
%871 = linalg.generic {indexing_maps = [#map2, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%cst : tensor<3xf16>) outs(%870 : tensor<1x3x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
linalg.yield %in : f16 | |
} -> tensor<1x3x512x512xf16> | |
%872 = linalg.conv_2d_nchw_fchw {dilations = dense<1> : vector<2xi64>, strides = dense<1> : vector<2xi64>} ins(%padded_384, %cst_0 : tensor<1x128x514x514xf16>, tensor<3x128x3x3xf16>) outs(%871 : tensor<1x3x512x512xf16>) -> tensor<1x3x512x512xf16> | |
%873 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%872 : tensor<1x3x512x512xf16>) outs(%870 : tensor<1x3x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.divf %in, %cst_157 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x3x512x512xf16> | |
%874 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%873 : tensor<1x3x512x512xf16>) outs(%870 : tensor<1x3x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.addf %in, %cst_158 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x3x512x512xf16> | |
%875 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%874 : tensor<1x3x512x512xf16>) outs(%870 : tensor<1x3x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.cmpf ult, %in, %cst_139 : f16 | |
%879 = arith.select %878, %cst_139, %in : f16 | |
%880 = arith.cmpf ugt, %879, %cst_141 : f16 | |
%881 = arith.select %880, %cst_141, %879 : f16 | |
linalg.yield %881 : f16 | |
} -> tensor<1x3x512x512xf16> | |
%876 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%875 : tensor<1x3x512x512xf16>) outs(%870 : tensor<1x3x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = arith.mulf %in, %cst_159 : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x3x512x512xf16> | |
%877 = linalg.generic {indexing_maps = [#map, #map1], iterator_types = ["parallel", "parallel", "parallel", "parallel"]} ins(%876 : tensor<1x3x512x512xf16>) outs(%870 : tensor<1x3x512x512xf16>) { | |
^bb0(%in: f16, %out: f16): | |
%878 = math.roundeven %in : f16 | |
linalg.yield %878 : f16 | |
} -> tensor<1x3x512x512xf16> | |
return %877 : tensor<1x3x512x512xf16> | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment