diff --git a/coreir_compute/resnet5_1_compute.json b/coreir_compute/resnet5_1_compute.json new file mode 100644 index 000000000..452451c7c --- /dev/null +++ b/coreir_compute/resnet5_1_compute.json @@ -0,0 +1,1054 @@ +{ +"namespaces":{ + "global":{ + "modules":{ + "hcompute_hw_output_stencil":{ + "type":["Record",[ + ["out_hw_output_stencil",["Array",16,"Bit"]], + ["in0_output_glb_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "connections":[ + ["self.out_hw_output_stencil","self.in0_output_glb_stencil.0"] + ] + }, + "hcompute_input_cgra_stencil":{ + "type":["Record",[ + ["out_input_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_glb_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "connections":[ + ["self.out_input_cgra_stencil","self.in0_input_glb_stencil.0"] + ] + }, + "hcompute_input_glb_stencil":{ + "type":["Record",[ + ["out_input_glb_stencil",["Array",16,"Bit"]], + ["in0_input_host_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "connections":[ + ["self.out_input_glb_stencil","self.in0_input_host_stencil.0"] + ] + }, + "hcompute_kernel_cgra_stencil":{ + "type":["Record",[ + ["out_kernel_cgra_stencil",["Array",16,"Bit"]], + ["in0_kernel_glb_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "connections":[ + ["self.out_kernel_cgra_stencil","self.in0_kernel_glb_stencil.0"] + ] + }, + "hcompute_kernel_glb_stencil":{ + "type":["Record",[ + ["out_kernel_glb_stencil",["Array",16,"Bit"]], + ["in0_kernel_host_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "connections":[ + ["self.out_kernel_glb_stencil","self.in0_kernel_host_stencil.0"] + ] + }, + "hcompute_output_cgra_stencil":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__687":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__687.out"] + ] + }, + "hcompute_output_cgra_stencil_1":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__690":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__690.out"] + ] + }, + "hcompute_output_cgra_stencil_10":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_873_887_888":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_874_885_886":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_875_884_885":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_876_883_884":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_877_882_883":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_878_881_882":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_879_880_881":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_3_886_887":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_17_input_cgra_stencil_17_873":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_18_input_cgra_stencil_18_874":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_19_input_cgra_stencil_19_875":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_20_input_cgra_stencil_20_876":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_21_input_cgra_stencil_21_877":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_22_input_cgra_stencil_22_878":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_23_input_cgra_stencil_23_879":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_24_input_cgra_stencil_24_880":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_17_input_cgra_stencil_17_873.out","add_873_887_888.in0"], + ["add_output_cgra_stencil_3_886_887.out","add_873_887_888.in1"], + ["self.out_output_cgra_stencil","add_873_887_888.out"], + ["mul_kernel_cgra_stencil_18_input_cgra_stencil_18_874.out","add_874_885_886.in0"], + ["add_875_884_885.out","add_874_885_886.in1"], + ["add_output_cgra_stencil_3_886_887.in1","add_874_885_886.out"], + ["mul_kernel_cgra_stencil_19_input_cgra_stencil_19_875.out","add_875_884_885.in0"], + ["add_876_883_884.out","add_875_884_885.in1"], + ["mul_kernel_cgra_stencil_20_input_cgra_stencil_20_876.out","add_876_883_884.in0"], + ["add_877_882_883.out","add_876_883_884.in1"], + ["mul_kernel_cgra_stencil_21_input_cgra_stencil_21_877.out","add_877_882_883.in0"], + ["add_878_881_882.out","add_877_882_883.in1"], + ["mul_kernel_cgra_stencil_22_input_cgra_stencil_22_878.out","add_878_881_882.in0"], + ["add_879_880_881.out","add_878_881_882.in1"], + ["mul_kernel_cgra_stencil_23_input_cgra_stencil_23_879.out","add_879_880_881.in0"], + ["mul_kernel_cgra_stencil_24_input_cgra_stencil_24_880.out","add_879_880_881.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_3_886_887.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_17_input_cgra_stencil_17_873.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_17_input_cgra_stencil_17_873.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_18_input_cgra_stencil_18_874.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_18_input_cgra_stencil_18_874.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_19_input_cgra_stencil_19_875.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_19_input_cgra_stencil_19_875.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_20_input_cgra_stencil_20_876.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_20_input_cgra_stencil_20_876.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_21_input_cgra_stencil_21_877.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_21_input_cgra_stencil_21_877.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_22_input_cgra_stencil_22_878.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_22_input_cgra_stencil_22_878.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_23_input_cgra_stencil_23_879.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_23_input_cgra_stencil_23_879.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_24_input_cgra_stencil_24_880.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_24_input_cgra_stencil_24_880.in1"] + ] + }, + "hcompute_output_cgra_stencil_11":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_942_956_957":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_943_954_955":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_944_953_954":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_945_952_953":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_946_951_952":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_947_950_951":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_948_949_950":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_4_955_956":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_25_input_cgra_stencil_25_942":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_26_input_cgra_stencil_26_943":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_27_input_cgra_stencil_27_944":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_28_input_cgra_stencil_28_945":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_29_input_cgra_stencil_29_946":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_30_input_cgra_stencil_30_947":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_31_input_cgra_stencil_31_948":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_32_input_cgra_stencil_32_949":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_25_input_cgra_stencil_25_942.out","add_942_956_957.in0"], + ["add_output_cgra_stencil_4_955_956.out","add_942_956_957.in1"], + ["self.out_output_cgra_stencil","add_942_956_957.out"], + ["mul_kernel_cgra_stencil_26_input_cgra_stencil_26_943.out","add_943_954_955.in0"], + ["add_944_953_954.out","add_943_954_955.in1"], + ["add_output_cgra_stencil_4_955_956.in1","add_943_954_955.out"], + ["mul_kernel_cgra_stencil_27_input_cgra_stencil_27_944.out","add_944_953_954.in0"], + ["add_945_952_953.out","add_944_953_954.in1"], + ["mul_kernel_cgra_stencil_28_input_cgra_stencil_28_945.out","add_945_952_953.in0"], + ["add_946_951_952.out","add_945_952_953.in1"], + ["mul_kernel_cgra_stencil_29_input_cgra_stencil_29_946.out","add_946_951_952.in0"], + ["add_947_950_951.out","add_946_951_952.in1"], + ["mul_kernel_cgra_stencil_30_input_cgra_stencil_30_947.out","add_947_950_951.in0"], + ["add_948_949_950.out","add_947_950_951.in1"], + ["mul_kernel_cgra_stencil_31_input_cgra_stencil_31_948.out","add_948_949_950.in0"], + ["mul_kernel_cgra_stencil_32_input_cgra_stencil_32_949.out","add_948_949_950.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_4_955_956.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_25_input_cgra_stencil_25_942.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_25_input_cgra_stencil_25_942.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_26_input_cgra_stencil_26_943.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_26_input_cgra_stencil_26_943.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_27_input_cgra_stencil_27_944.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_27_input_cgra_stencil_27_944.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_28_input_cgra_stencil_28_945.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_28_input_cgra_stencil_28_945.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_29_input_cgra_stencil_29_946.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_29_input_cgra_stencil_29_946.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_30_input_cgra_stencil_30_947.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_30_input_cgra_stencil_30_947.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_31_input_cgra_stencil_31_948.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_31_input_cgra_stencil_31_948.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_32_input_cgra_stencil_32_949.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_32_input_cgra_stencil_32_949.in1"] + ] + }, + "hcompute_output_cgra_stencil_12":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_1011_1025_1026":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1012_1023_1024":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1013_1022_1023":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1014_1021_1022":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1015_1020_1021":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1016_1019_1020":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1017_1018_1019":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_5_1024_1025":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_33_input_cgra_stencil_33_1011":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_34_input_cgra_stencil_34_1012":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_35_input_cgra_stencil_35_1013":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_36_input_cgra_stencil_36_1014":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_37_input_cgra_stencil_37_1015":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_38_input_cgra_stencil_38_1016":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_39_input_cgra_stencil_39_1017":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_40_input_cgra_stencil_40_1018":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_33_input_cgra_stencil_33_1011.out","add_1011_1025_1026.in0"], + ["add_output_cgra_stencil_5_1024_1025.out","add_1011_1025_1026.in1"], + ["self.out_output_cgra_stencil","add_1011_1025_1026.out"], + ["mul_kernel_cgra_stencil_34_input_cgra_stencil_34_1012.out","add_1012_1023_1024.in0"], + ["add_1013_1022_1023.out","add_1012_1023_1024.in1"], + ["add_output_cgra_stencil_5_1024_1025.in1","add_1012_1023_1024.out"], + ["mul_kernel_cgra_stencil_35_input_cgra_stencil_35_1013.out","add_1013_1022_1023.in0"], + ["add_1014_1021_1022.out","add_1013_1022_1023.in1"], + ["mul_kernel_cgra_stencil_36_input_cgra_stencil_36_1014.out","add_1014_1021_1022.in0"], + ["add_1015_1020_1021.out","add_1014_1021_1022.in1"], + ["mul_kernel_cgra_stencil_37_input_cgra_stencil_37_1015.out","add_1015_1020_1021.in0"], + ["add_1016_1019_1020.out","add_1015_1020_1021.in1"], + ["mul_kernel_cgra_stencil_38_input_cgra_stencil_38_1016.out","add_1016_1019_1020.in0"], + ["add_1017_1018_1019.out","add_1016_1019_1020.in1"], + ["mul_kernel_cgra_stencil_39_input_cgra_stencil_39_1017.out","add_1017_1018_1019.in0"], + ["mul_kernel_cgra_stencil_40_input_cgra_stencil_40_1018.out","add_1017_1018_1019.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_5_1024_1025.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_33_input_cgra_stencil_33_1011.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_33_input_cgra_stencil_33_1011.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_34_input_cgra_stencil_34_1012.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_34_input_cgra_stencil_34_1012.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_35_input_cgra_stencil_35_1013.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_35_input_cgra_stencil_35_1013.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_36_input_cgra_stencil_36_1014.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_36_input_cgra_stencil_36_1014.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_37_input_cgra_stencil_37_1015.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_37_input_cgra_stencil_37_1015.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_38_input_cgra_stencil_38_1016.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_38_input_cgra_stencil_38_1016.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_39_input_cgra_stencil_39_1017.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_39_input_cgra_stencil_39_1017.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_40_input_cgra_stencil_40_1018.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_40_input_cgra_stencil_40_1018.in1"] + ] + }, + "hcompute_output_cgra_stencil_13":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_1080_1094_1095":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1081_1092_1093":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1082_1091_1092":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1083_1090_1091":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1084_1089_1090":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1085_1088_1089":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1086_1087_1088":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_6_1093_1094":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_41_input_cgra_stencil_41_1080":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_42_input_cgra_stencil_42_1081":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_43_input_cgra_stencil_43_1082":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_44_input_cgra_stencil_44_1083":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_45_input_cgra_stencil_45_1084":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_46_input_cgra_stencil_46_1085":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_47_input_cgra_stencil_47_1086":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_48_input_cgra_stencil_48_1087":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_41_input_cgra_stencil_41_1080.out","add_1080_1094_1095.in0"], + ["add_output_cgra_stencil_6_1093_1094.out","add_1080_1094_1095.in1"], + ["self.out_output_cgra_stencil","add_1080_1094_1095.out"], + ["mul_kernel_cgra_stencil_42_input_cgra_stencil_42_1081.out","add_1081_1092_1093.in0"], + ["add_1082_1091_1092.out","add_1081_1092_1093.in1"], + ["add_output_cgra_stencil_6_1093_1094.in1","add_1081_1092_1093.out"], + ["mul_kernel_cgra_stencil_43_input_cgra_stencil_43_1082.out","add_1082_1091_1092.in0"], + ["add_1083_1090_1091.out","add_1082_1091_1092.in1"], + ["mul_kernel_cgra_stencil_44_input_cgra_stencil_44_1083.out","add_1083_1090_1091.in0"], + ["add_1084_1089_1090.out","add_1083_1090_1091.in1"], + ["mul_kernel_cgra_stencil_45_input_cgra_stencil_45_1084.out","add_1084_1089_1090.in0"], + ["add_1085_1088_1089.out","add_1084_1089_1090.in1"], + ["mul_kernel_cgra_stencil_46_input_cgra_stencil_46_1085.out","add_1085_1088_1089.in0"], + ["add_1086_1087_1088.out","add_1085_1088_1089.in1"], + ["mul_kernel_cgra_stencil_47_input_cgra_stencil_47_1086.out","add_1086_1087_1088.in0"], + ["mul_kernel_cgra_stencil_48_input_cgra_stencil_48_1087.out","add_1086_1087_1088.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_6_1093_1094.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_41_input_cgra_stencil_41_1080.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_41_input_cgra_stencil_41_1080.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_42_input_cgra_stencil_42_1081.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_42_input_cgra_stencil_42_1081.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_43_input_cgra_stencil_43_1082.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_43_input_cgra_stencil_43_1082.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_44_input_cgra_stencil_44_1083.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_44_input_cgra_stencil_44_1083.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_45_input_cgra_stencil_45_1084.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_45_input_cgra_stencil_45_1084.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_46_input_cgra_stencil_46_1085.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_46_input_cgra_stencil_46_1085.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_47_input_cgra_stencil_47_1086.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_47_input_cgra_stencil_47_1086.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_48_input_cgra_stencil_48_1087.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_48_input_cgra_stencil_48_1087.in1"] + ] + }, + "hcompute_output_cgra_stencil_14":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_1149_1163_1164":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1150_1161_1162":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1151_1160_1161":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1152_1159_1160":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1153_1158_1159":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1154_1157_1158":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1155_1156_1157":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_7_1162_1163":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_49_input_cgra_stencil_49_1149":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_50_input_cgra_stencil_50_1150":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_51_input_cgra_stencil_51_1151":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_52_input_cgra_stencil_52_1152":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_53_input_cgra_stencil_53_1153":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_54_input_cgra_stencil_54_1154":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_55_input_cgra_stencil_55_1155":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_56_input_cgra_stencil_56_1156":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_49_input_cgra_stencil_49_1149.out","add_1149_1163_1164.in0"], + ["add_output_cgra_stencil_7_1162_1163.out","add_1149_1163_1164.in1"], + ["self.out_output_cgra_stencil","add_1149_1163_1164.out"], + ["mul_kernel_cgra_stencil_50_input_cgra_stencil_50_1150.out","add_1150_1161_1162.in0"], + ["add_1151_1160_1161.out","add_1150_1161_1162.in1"], + ["add_output_cgra_stencil_7_1162_1163.in1","add_1150_1161_1162.out"], + ["mul_kernel_cgra_stencil_51_input_cgra_stencil_51_1151.out","add_1151_1160_1161.in0"], + ["add_1152_1159_1160.out","add_1151_1160_1161.in1"], + ["mul_kernel_cgra_stencil_52_input_cgra_stencil_52_1152.out","add_1152_1159_1160.in0"], + ["add_1153_1158_1159.out","add_1152_1159_1160.in1"], + ["mul_kernel_cgra_stencil_53_input_cgra_stencil_53_1153.out","add_1153_1158_1159.in0"], + ["add_1154_1157_1158.out","add_1153_1158_1159.in1"], + ["mul_kernel_cgra_stencil_54_input_cgra_stencil_54_1154.out","add_1154_1157_1158.in0"], + ["add_1155_1156_1157.out","add_1154_1157_1158.in1"], + ["mul_kernel_cgra_stencil_55_input_cgra_stencil_55_1155.out","add_1155_1156_1157.in0"], + ["mul_kernel_cgra_stencil_56_input_cgra_stencil_56_1156.out","add_1155_1156_1157.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_7_1162_1163.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_49_input_cgra_stencil_49_1149.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_49_input_cgra_stencil_49_1149.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_50_input_cgra_stencil_50_1150.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_50_input_cgra_stencil_50_1150.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_51_input_cgra_stencil_51_1151.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_51_input_cgra_stencil_51_1151.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_52_input_cgra_stencil_52_1152.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_52_input_cgra_stencil_52_1152.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_53_input_cgra_stencil_53_1153.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_53_input_cgra_stencil_53_1153.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_54_input_cgra_stencil_54_1154.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_54_input_cgra_stencil_54_1154.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_55_input_cgra_stencil_55_1155.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_55_input_cgra_stencil_55_1155.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_56_input_cgra_stencil_56_1156.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_56_input_cgra_stencil_56_1156.in1"] + ] + }, + "hcompute_output_cgra_stencil_15":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_1218_1232_1233":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1219_1230_1231":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1220_1229_1230":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1221_1228_1229":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1222_1227_1228":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1223_1226_1227":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_1224_1225_1226":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_8_1231_1232":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_57_input_cgra_stencil_57_1218":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_58_input_cgra_stencil_58_1219":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_59_input_cgra_stencil_59_1220":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_60_input_cgra_stencil_60_1221":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_61_input_cgra_stencil_61_1222":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_62_input_cgra_stencil_62_1223":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_63_input_cgra_stencil_63_1224":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_64_input_cgra_stencil_64_1225":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_57_input_cgra_stencil_57_1218.out","add_1218_1232_1233.in0"], + ["add_output_cgra_stencil_8_1231_1232.out","add_1218_1232_1233.in1"], + ["self.out_output_cgra_stencil","add_1218_1232_1233.out"], + ["mul_kernel_cgra_stencil_58_input_cgra_stencil_58_1219.out","add_1219_1230_1231.in0"], + ["add_1220_1229_1230.out","add_1219_1230_1231.in1"], + ["add_output_cgra_stencil_8_1231_1232.in1","add_1219_1230_1231.out"], + ["mul_kernel_cgra_stencil_59_input_cgra_stencil_59_1220.out","add_1220_1229_1230.in0"], + ["add_1221_1228_1229.out","add_1220_1229_1230.in1"], + ["mul_kernel_cgra_stencil_60_input_cgra_stencil_60_1221.out","add_1221_1228_1229.in0"], + ["add_1222_1227_1228.out","add_1221_1228_1229.in1"], + ["mul_kernel_cgra_stencil_61_input_cgra_stencil_61_1222.out","add_1222_1227_1228.in0"], + ["add_1223_1226_1227.out","add_1222_1227_1228.in1"], + ["mul_kernel_cgra_stencil_62_input_cgra_stencil_62_1223.out","add_1223_1226_1227.in0"], + ["add_1224_1225_1226.out","add_1223_1226_1227.in1"], + ["mul_kernel_cgra_stencil_63_input_cgra_stencil_63_1224.out","add_1224_1225_1226.in0"], + ["mul_kernel_cgra_stencil_64_input_cgra_stencil_64_1225.out","add_1224_1225_1226.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_8_1231_1232.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_57_input_cgra_stencil_57_1218.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_57_input_cgra_stencil_57_1218.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_58_input_cgra_stencil_58_1219.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_58_input_cgra_stencil_58_1219.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_59_input_cgra_stencil_59_1220.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_59_input_cgra_stencil_59_1220.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_60_input_cgra_stencil_60_1221.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_60_input_cgra_stencil_60_1221.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_61_input_cgra_stencil_61_1222.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_61_input_cgra_stencil_61_1222.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_62_input_cgra_stencil_62_1223.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_62_input_cgra_stencil_62_1223.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_63_input_cgra_stencil_63_1224.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_63_input_cgra_stencil_63_1224.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_64_input_cgra_stencil_64_1225.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_64_input_cgra_stencil_64_1225.in1"] + ] + }, + "hcompute_output_cgra_stencil_2":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__693":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__693.out"] + ] + }, + "hcompute_output_cgra_stencil_3":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__696":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__696.out"] + ] + }, + "hcompute_output_cgra_stencil_4":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__699":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__699.out"] + ] + }, + "hcompute_output_cgra_stencil_5":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__702":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__702.out"] + ] + }, + "hcompute_output_cgra_stencil_6":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__705":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__705.out"] + ] + }, + "hcompute_output_cgra_stencil_7":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]] + ]], + "instances":{ + "const_p0__708":{ + "genref":"coreir.const", + "genargs":{"width":["Int",16]}, + "modargs":{"value":[["BitVector",16],"16'h0000"]} + } + }, + "connections":[ + ["self.out_output_cgra_stencil","const_p0__708.out"] + ] + }, + "hcompute_output_cgra_stencil_8":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_735_749_750":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_736_747_748":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_737_746_747":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_738_745_746":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_739_744_745":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_740_743_744":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_741_742_743":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_1_748_749":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_1_input_cgra_stencil_1_735":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_2_input_cgra_stencil_2_736":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_3_input_cgra_stencil_3_737":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_4_input_cgra_stencil_4_738":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_5_input_cgra_stencil_5_739":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_6_input_cgra_stencil_6_740":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_7_input_cgra_stencil_7_741":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_8_input_cgra_stencil_8_742":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_1_input_cgra_stencil_1_735.out","add_735_749_750.in0"], + ["add_output_cgra_stencil_1_748_749.out","add_735_749_750.in1"], + ["self.out_output_cgra_stencil","add_735_749_750.out"], + ["mul_kernel_cgra_stencil_2_input_cgra_stencil_2_736.out","add_736_747_748.in0"], + ["add_737_746_747.out","add_736_747_748.in1"], + ["add_output_cgra_stencil_1_748_749.in1","add_736_747_748.out"], + ["mul_kernel_cgra_stencil_3_input_cgra_stencil_3_737.out","add_737_746_747.in0"], + ["add_738_745_746.out","add_737_746_747.in1"], + ["mul_kernel_cgra_stencil_4_input_cgra_stencil_4_738.out","add_738_745_746.in0"], + ["add_739_744_745.out","add_738_745_746.in1"], + ["mul_kernel_cgra_stencil_5_input_cgra_stencil_5_739.out","add_739_744_745.in0"], + ["add_740_743_744.out","add_739_744_745.in1"], + ["mul_kernel_cgra_stencil_6_input_cgra_stencil_6_740.out","add_740_743_744.in0"], + ["add_741_742_743.out","add_740_743_744.in1"], + ["mul_kernel_cgra_stencil_7_input_cgra_stencil_7_741.out","add_741_742_743.in0"], + ["mul_kernel_cgra_stencil_8_input_cgra_stencil_8_742.out","add_741_742_743.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_1_748_749.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_1_input_cgra_stencil_1_735.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_1_input_cgra_stencil_1_735.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_2_input_cgra_stencil_2_736.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_2_input_cgra_stencil_2_736.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_3_input_cgra_stencil_3_737.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_3_input_cgra_stencil_3_737.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_4_input_cgra_stencil_4_738.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_4_input_cgra_stencil_4_738.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_5_input_cgra_stencil_5_739.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_5_input_cgra_stencil_5_739.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_6_input_cgra_stencil_6_740.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_6_input_cgra_stencil_6_740.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_7_input_cgra_stencil_7_741.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_7_input_cgra_stencil_7_741.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_8_input_cgra_stencil_8_742.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_8_input_cgra_stencil_8_742.in1"] + ] + }, + "hcompute_output_cgra_stencil_9":{ + "type":["Record",[ + ["out_output_cgra_stencil",["Array",16,"Bit"]], + ["in0_input_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in1_kernel_cgra_stencil",["Array",8,["Array",16,"BitIn"]]], + ["in2_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "instances":{ + "add_804_818_819":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_805_816_817":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_806_815_816":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_807_814_815":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_808_813_814":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_809_812_813":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_810_811_812":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "add_output_cgra_stencil_2_817_818":{ + "genref":"coreir.add", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_10_input_cgra_stencil_10_805":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_11_input_cgra_stencil_11_806":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_12_input_cgra_stencil_12_807":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_13_input_cgra_stencil_13_808":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_14_input_cgra_stencil_14_809":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_15_input_cgra_stencil_15_810":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_16_input_cgra_stencil_16_811":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + }, + "mul_kernel_cgra_stencil_9_input_cgra_stencil_9_804":{ + "genref":"coreir.mul", + "genargs":{"width":["Int",16]} + } + }, + "connections":[ + ["mul_kernel_cgra_stencil_9_input_cgra_stencil_9_804.out","add_804_818_819.in0"], + ["add_output_cgra_stencil_2_817_818.out","add_804_818_819.in1"], + ["self.out_output_cgra_stencil","add_804_818_819.out"], + ["mul_kernel_cgra_stencil_10_input_cgra_stencil_10_805.out","add_805_816_817.in0"], + ["add_806_815_816.out","add_805_816_817.in1"], + ["add_output_cgra_stencil_2_817_818.in1","add_805_816_817.out"], + ["mul_kernel_cgra_stencil_11_input_cgra_stencil_11_806.out","add_806_815_816.in0"], + ["add_807_814_815.out","add_806_815_816.in1"], + ["mul_kernel_cgra_stencil_12_input_cgra_stencil_12_807.out","add_807_814_815.in0"], + ["add_808_813_814.out","add_807_814_815.in1"], + ["mul_kernel_cgra_stencil_13_input_cgra_stencil_13_808.out","add_808_813_814.in0"], + ["add_809_812_813.out","add_808_813_814.in1"], + ["mul_kernel_cgra_stencil_14_input_cgra_stencil_14_809.out","add_809_812_813.in0"], + ["add_810_811_812.out","add_809_812_813.in1"], + ["mul_kernel_cgra_stencil_15_input_cgra_stencil_15_810.out","add_810_811_812.in0"], + ["mul_kernel_cgra_stencil_16_input_cgra_stencil_16_811.out","add_810_811_812.in1"], + ["self.in2_output_cgra_stencil.0","add_output_cgra_stencil_2_817_818.in0"], + ["self.in1_kernel_cgra_stencil.0","mul_kernel_cgra_stencil_10_input_cgra_stencil_10_805.in0"], + ["self.in0_input_cgra_stencil.0","mul_kernel_cgra_stencil_10_input_cgra_stencil_10_805.in1"], + ["self.in1_kernel_cgra_stencil.1","mul_kernel_cgra_stencil_11_input_cgra_stencil_11_806.in0"], + ["self.in0_input_cgra_stencil.1","mul_kernel_cgra_stencil_11_input_cgra_stencil_11_806.in1"], + ["self.in1_kernel_cgra_stencil.2","mul_kernel_cgra_stencil_12_input_cgra_stencil_12_807.in0"], + ["self.in0_input_cgra_stencil.2","mul_kernel_cgra_stencil_12_input_cgra_stencil_12_807.in1"], + ["self.in1_kernel_cgra_stencil.3","mul_kernel_cgra_stencil_13_input_cgra_stencil_13_808.in0"], + ["self.in0_input_cgra_stencil.3","mul_kernel_cgra_stencil_13_input_cgra_stencil_13_808.in1"], + ["self.in1_kernel_cgra_stencil.4","mul_kernel_cgra_stencil_14_input_cgra_stencil_14_809.in0"], + ["self.in0_input_cgra_stencil.4","mul_kernel_cgra_stencil_14_input_cgra_stencil_14_809.in1"], + ["self.in1_kernel_cgra_stencil.5","mul_kernel_cgra_stencil_15_input_cgra_stencil_15_810.in0"], + ["self.in0_input_cgra_stencil.5","mul_kernel_cgra_stencil_15_input_cgra_stencil_15_810.in1"], + ["self.in1_kernel_cgra_stencil.6","mul_kernel_cgra_stencil_16_input_cgra_stencil_16_811.in0"], + ["self.in0_input_cgra_stencil.6","mul_kernel_cgra_stencil_16_input_cgra_stencil_16_811.in1"], + ["self.in1_kernel_cgra_stencil.7","mul_kernel_cgra_stencil_9_input_cgra_stencil_9_804.in0"], + ["self.in0_input_cgra_stencil.7","mul_kernel_cgra_stencil_9_input_cgra_stencil_9_804.in1"] + ] + }, + "hcompute_output_glb_stencil":{ + "type":["Record",[ + ["out_output_glb_stencil",["Array",16,"Bit"]], + ["in0_output_cgra_stencil",["Array",1,["Array",16,"BitIn"]]] + ]], + "connections":[ + ["self.out_output_glb_stencil","self.in0_output_cgra_stencil.0"] + ] + } + } + } +} +} diff --git a/example_progs.h b/example_progs.h index 036f9ab9e..8221e11df 100644 --- a/example_progs.h +++ b/example_progs.h @@ -96,3 +96,4 @@ prog bc_repeat(); prog bc_mirror(); prog gaussian_unroll(); +prog resnet5_1(); diff --git a/example_progs/resnet5_1_memory.cpp b/example_progs/resnet5_1_memory.cpp new file mode 100644 index 000000000..779767add --- /dev/null +++ b/example_progs/resnet5_1_memory.cpp @@ -0,0 +1,325 @@ +#include "example_progs.h" +prog resnet5_1() { + prog prg; + prg.compute_unit_file = "resnet5_1_compute.h"; + prg.name = "resnet5_1"; + +// Stencil &input_host_stencil = arg_0; + prg.add_input("input_host_stencil"); + prg.buffer_port_widths["input_host_stencil"] = 16; +// Stencil &kernel_host_stencil = arg_1; + prg.add_input("kernel_host_stencil"); + prg.buffer_port_widths["kernel_host_stencil"] = 16; +// Stencil &hw_output_stencil = arg_2; + prg.add_output("hw_output_stencil"); + prg.buffer_port_widths["hw_output_stencil"] = 16; + +////producing input_glb.stencil + auto input_glb_s0_y = prg.add_loop("input_glb_s0_y", 0, 15); + auto input_glb_s0_x = input_glb_s0_y->add_loop("input_glb_s0_x", 0, 15); + auto input_glb_s0_z = input_glb_s0_x->add_loop("input_glb_s0_z", 0, 256); + +//store is: input_glb.stencil(input_glb_s0_z, input_glb_s0_x, input_glb_s0_y) = input_host.stencil(input_glb_s0_z, input_glb_s0_x, input_glb_s0_y) + auto hcompute_input_glb_stencil = input_glb_s0_z->add_op("op_hcompute_input_glb_stencil"); + hcompute_input_glb_stencil->add_function("hcompute_input_glb_stencil"); + hcompute_input_glb_stencil->add_load("input_host_stencil", "input_glb_s0_y", "input_glb_s0_x", "input_glb_s0_z"); + prg.buffer_port_widths["input_glb_stencil"] = 16; + hcompute_input_glb_stencil->add_store("input_glb_stencil", "input_glb_s0_y", "input_glb_s0_x", "input_glb_s0_z"); + +//consuming input_glb.stencil +////producing kernel_glb.stencil + auto kernel_glb_s0_y = prg.add_loop("kernel_glb_s0_y", 0, 3); + auto kernel_glb_s0_x = kernel_glb_s0_y->add_loop("kernel_glb_s0_x", 0, 3); + auto kernel_glb_s0_w = kernel_glb_s0_x->add_loop("kernel_glb_s0_w", 0, 512); + auto kernel_glb_s0_z = kernel_glb_s0_w->add_loop("kernel_glb_s0_z", 0, 256); + +//store is: kernel_glb.stencil(kernel_glb_s0_z, (kernel_glb_s0_w + 504), kernel_glb_s0_x, kernel_glb_s0_y) = kernel_host.stencil(kernel_glb_s0_z, kernel_glb_s0_w, kernel_glb_s0_x, kernel_glb_s0_y) + auto hcompute_kernel_glb_stencil = kernel_glb_s0_z->add_op("op_hcompute_kernel_glb_stencil"); + hcompute_kernel_glb_stencil->add_function("hcompute_kernel_glb_stencil"); + hcompute_kernel_glb_stencil->add_load("kernel_host_stencil", "kernel_glb_s0_y", "kernel_glb_s0_x", "kernel_glb_s0_w", "kernel_glb_s0_z"); + prg.buffer_port_widths["kernel_glb_stencil"] = 16; + hcompute_kernel_glb_stencil->add_store("kernel_glb_stencil", "kernel_glb_s0_y", "kernel_glb_s0_x", "(kernel_glb_s0_w + 504)", "kernel_glb_s0_z"); + +//consuming kernel_glb.stencil +////producing output_glb.stencil + auto output_glb_s0_w_w_glb = prg.add_loop("output_glb_s0_w_w_glb", 0, 64); +////producing output_cgra.stencil + auto output_cgra_s0_y = output_glb_s0_w_w_glb->add_loop("output_cgra_s0_y", 0, 7); + auto output_cgra_s0_x = output_cgra_s0_y->add_loop("output_cgra_s0_x", 0, 7); + +//store is: output_cgra.stencil(0, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil"); + hcompute_output_cgra_stencil->add_function("hcompute_output_cgra_stencil"); + prg.buffer_port_widths["output_cgra_stencil"] = 16; + hcompute_output_cgra_stencil->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "0"); + +//store is: output_cgra.stencil(1, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_1 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_1"); + hcompute_output_cgra_stencil_1->add_function("hcompute_output_cgra_stencil_1"); + hcompute_output_cgra_stencil_1->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "1"); + +//store is: output_cgra.stencil(2, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_2 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_2"); + hcompute_output_cgra_stencil_2->add_function("hcompute_output_cgra_stencil_2"); + hcompute_output_cgra_stencil_2->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "2"); + +//store is: output_cgra.stencil(3, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_3 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_3"); + hcompute_output_cgra_stencil_3->add_function("hcompute_output_cgra_stencil_3"); + hcompute_output_cgra_stencil_3->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "3"); + +//store is: output_cgra.stencil(4, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_4 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_4"); + hcompute_output_cgra_stencil_4->add_function("hcompute_output_cgra_stencil_4"); + hcompute_output_cgra_stencil_4->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "4"); + +//store is: output_cgra.stencil(5, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_5 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_5"); + hcompute_output_cgra_stencil_5->add_function("hcompute_output_cgra_stencil_5"); + hcompute_output_cgra_stencil_5->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "5"); + +//store is: output_cgra.stencil(6, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_6 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_6"); + hcompute_output_cgra_stencil_6->add_function("hcompute_output_cgra_stencil_6"); + hcompute_output_cgra_stencil_6->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "6"); + +//store is: output_cgra.stencil(7, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 + auto hcompute_output_cgra_stencil_7 = output_cgra_s0_x->add_op("op_hcompute_output_cgra_stencil_7"); + hcompute_output_cgra_stencil_7->add_function("hcompute_output_cgra_stencil_7"); + hcompute_output_cgra_stencil_7->add_store("output_cgra_stencil", "output_cgra_s0_y", "output_cgra_s0_x", "7"); + auto output_cgra_s1_r_z_rz_glb = output_glb_s0_w_w_glb->add_loop("output_cgra_s1_r_z_rz_glb", 0, 32); +////producing input_cgra.stencil + auto input_cgra_s0_y = output_cgra_s1_r_z_rz_glb->add_loop("input_cgra_s0_y", 0, 15); + auto input_cgra_s0_x = input_cgra_s0_y->add_loop("input_cgra_s0_x", 0, 15); + auto input_cgra_s0_z_z_cgra = input_cgra_s0_x->add_loop("input_cgra_s0_z_z_cgra", 0, 8); + +//store is: input_cgra.stencil(input_cgra_s0_z_z_cgra, input_cgra_s0_x, input_cgra_s0_y) = input_glb.stencil(((output_cgra_s1_r_z_rz_glb*8) + input_cgra_s0_z_z_cgra), input_cgra_s0_x, input_cgra_s0_y) + auto hcompute_input_cgra_stencil = input_cgra_s0_z_z_cgra->add_op("op_hcompute_input_cgra_stencil"); + hcompute_input_cgra_stencil->add_function("hcompute_input_cgra_stencil"); + hcompute_input_cgra_stencil->add_load("input_glb_stencil", "input_cgra_s0_y", "input_cgra_s0_x", "((output_cgra_s1_r_z_rz_glb*8) + input_cgra_s0_z_z_cgra)"); + prg.buffer_port_widths["input_cgra_stencil"] = 16; + hcompute_input_cgra_stencil->add_store("input_cgra_stencil", "input_cgra_s0_y", "input_cgra_s0_x", "input_cgra_s0_z_z_cgra"); + +//consuming input_cgra.stencil +////producing kernel_cgra.stencil + auto kernel_cgra_s0_y = output_cgra_s1_r_z_rz_glb->add_loop("kernel_cgra_s0_y", 0, 3); + auto kernel_cgra_s0_x = kernel_cgra_s0_y->add_loop("kernel_cgra_s0_x", 0, 3); + auto kernel_cgra_s0_w_w_cgra = kernel_cgra_s0_x->add_loop("kernel_cgra_s0_w_w_cgra", 0, 8); + auto kernel_cgra_s0_z_z_cgra = kernel_cgra_s0_w_w_cgra->add_loop("kernel_cgra_s0_z_z_cgra", 0, 8); + +//store is: kernel_cgra.stencil(kernel_cgra_s0_z_z_cgra, kernel_cgra_s0_w_w_cgra, kernel_cgra_s0_x, kernel_cgra_s0_y) = kernel_glb.stencil(((output_cgra_s1_r_z_rz_glb*8) + kernel_cgra_s0_z_z_cgra), (((output_glb_s0_w_w_glb*8) + kernel_cgra_s0_w_w_cgra) + 504), kernel_cgra_s0_x, kernel_cgra_s0_y) + auto hcompute_kernel_cgra_stencil = kernel_cgra_s0_z_z_cgra->add_op("op_hcompute_kernel_cgra_stencil"); + hcompute_kernel_cgra_stencil->add_function("hcompute_kernel_cgra_stencil"); + hcompute_kernel_cgra_stencil->add_load("kernel_glb_stencil", "kernel_cgra_s0_y", "kernel_cgra_s0_x", "(((output_glb_s0_w_w_glb*8) + kernel_cgra_s0_w_w_cgra) + 504)", "((output_cgra_s1_r_z_rz_glb*8) + kernel_cgra_s0_z_z_cgra)"); + prg.buffer_port_widths["kernel_cgra_stencil"] = 16; + hcompute_kernel_cgra_stencil->add_store("kernel_cgra_stencil", "kernel_cgra_s0_y", "kernel_cgra_s0_x", "kernel_cgra_s0_w_w_cgra", "kernel_cgra_s0_z_z_cgra"); + +//consuming kernel_cgra.stencil + auto output_cgra_s1_r_y = output_cgra_s1_r_z_rz_glb->add_loop("output_cgra_s1_r_y", 0, 3); + auto output_cgra_s1_r_x = output_cgra_s1_r_y->add_loop("output_cgra_s1_r_x", 0, 3); + auto output_cgra_s1_y = output_cgra_s1_r_x->add_loop("output_cgra_s1_y", 0, 7); + auto output_cgra_s1_x = output_cgra_s1_y->add_loop("output_cgra_s1_x", 0, 7); + +//store is: output_cgra.stencil(0, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(0, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_8 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_8"); + hcompute_output_cgra_stencil_8->add_function("hcompute_output_cgra_stencil_8"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_8->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "0"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "1"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "2"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "3"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "4"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "5"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "7"); + hcompute_output_cgra_stencil_8->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "0", "6"); + hcompute_output_cgra_stencil_8->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "0"); + hcompute_output_cgra_stencil_8->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "0"); + +//store is: output_cgra.stencil(1, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(1, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_9 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_9"); + hcompute_output_cgra_stencil_9->add_function("hcompute_output_cgra_stencil_9"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_9->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "1"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "2"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "3"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "4"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "5"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "7"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "6"); + hcompute_output_cgra_stencil_9->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "1", "0"); + hcompute_output_cgra_stencil_9->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "1"); + hcompute_output_cgra_stencil_9->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "1"); + +//store is: output_cgra.stencil(2, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(2, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_10 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_10"); + hcompute_output_cgra_stencil_10->add_function("hcompute_output_cgra_stencil_10"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_10->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "0"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "1"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "2"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "3"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "4"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "5"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "7"); + hcompute_output_cgra_stencil_10->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "2", "6"); + hcompute_output_cgra_stencil_10->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "2"); + hcompute_output_cgra_stencil_10->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "2"); + +//store is: output_cgra.stencil(3, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(3, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_11 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_11"); + hcompute_output_cgra_stencil_11->add_function("hcompute_output_cgra_stencil_11"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_11->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "0"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "1"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "2"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "3"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "4"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "5"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "7"); + hcompute_output_cgra_stencil_11->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "3", "6"); + hcompute_output_cgra_stencil_11->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "3"); + hcompute_output_cgra_stencil_11->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "3"); + +//store is: output_cgra.stencil(4, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(4, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_12 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_12"); + hcompute_output_cgra_stencil_12->add_function("hcompute_output_cgra_stencil_12"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_12->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "0"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "1"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "2"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "3"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "4"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "5"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "7"); + hcompute_output_cgra_stencil_12->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "4", "6"); + hcompute_output_cgra_stencil_12->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "4"); + hcompute_output_cgra_stencil_12->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "4"); + +//store is: output_cgra.stencil(5, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(5, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_13 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_13"); + hcompute_output_cgra_stencil_13->add_function("hcompute_output_cgra_stencil_13"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_13->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "0"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "1"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "2"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "3"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "4"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "5"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "7"); + hcompute_output_cgra_stencil_13->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "5", "6"); + hcompute_output_cgra_stencil_13->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "5"); + hcompute_output_cgra_stencil_13->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "5"); + +//store is: output_cgra.stencil(6, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(6, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_14 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_14"); + hcompute_output_cgra_stencil_14->add_function("hcompute_output_cgra_stencil_14"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_14->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "0"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "1"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "2"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "3"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "4"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "5"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "7"); + hcompute_output_cgra_stencil_14->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "6", "6"); + hcompute_output_cgra_stencil_14->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "6"); + hcompute_output_cgra_stencil_14->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "6"); + +//store is: output_cgra.stencil(7, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(7, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) + auto hcompute_output_cgra_stencil_15 = output_cgra_s1_x->add_op("op_hcompute_output_cgra_stencil_15"); + hcompute_output_cgra_stencil_15->add_function("hcompute_output_cgra_stencil_15"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "0"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "1"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "2"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "3"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "4"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "5"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "7"); + hcompute_output_cgra_stencil_15->add_load("input_cgra_stencil", "((output_cgra_s1_y*2) + output_cgra_s1_r_y)", "((output_cgra_s1_x*2) + output_cgra_s1_r_x)", "6"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "0"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "1"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "2"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "3"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "4"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "5"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "7"); + hcompute_output_cgra_stencil_15->add_load("kernel_cgra_stencil", "output_cgra_s1_r_y", "output_cgra_s1_r_x", "7", "6"); + hcompute_output_cgra_stencil_15->add_load("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "7"); + hcompute_output_cgra_stencil_15->add_store("output_cgra_stencil", "output_cgra_s1_y", "output_cgra_s1_x", "7"); + +//consuming output_cgra.stencil + auto output_glb_s0_y_y_cgra = output_glb_s0_w_w_glb->add_loop("output_glb_s0_y_y_cgra", 0, 7); + auto output_glb_s0_x_x_cgra = output_glb_s0_y_y_cgra->add_loop("output_glb_s0_x_x_cgra", 0, 7); + auto output_glb_s0_w_w_cgra = output_glb_s0_x_x_cgra->add_loop("output_glb_s0_w_w_cgra", 0, 8); + +//store is: output_glb.stencil(((output_glb_s0_w_w_glb*8) + output_glb_s0_w_w_cgra), output_glb_s0_x_x_cgra, output_glb_s0_y_y_cgra) = output_cgra.stencil(output_glb_s0_w_w_cgra, output_glb_s0_x_x_cgra, output_glb_s0_y_y_cgra) + auto hcompute_output_glb_stencil = output_glb_s0_w_w_cgra->add_op("op_hcompute_output_glb_stencil"); + hcompute_output_glb_stencil->add_function("hcompute_output_glb_stencil"); + hcompute_output_glb_stencil->add_load("output_cgra_stencil", "output_glb_s0_y_y_cgra", "output_glb_s0_x_x_cgra", "output_glb_s0_w_w_cgra"); + prg.buffer_port_widths["output_glb_stencil"] = 16; + hcompute_output_glb_stencil->add_store("output_glb_stencil", "output_glb_s0_y_y_cgra", "output_glb_s0_x_x_cgra", "((output_glb_s0_w_w_glb*8) + output_glb_s0_w_w_cgra)"); + +//consuming output_glb.stencil + auto hw_output_s0_y_yi = prg.add_loop("hw_output_s0_y_yi", 0, 7); + auto hw_output_s0_x_xi = hw_output_s0_y_yi->add_loop("hw_output_s0_x_xi", 0, 7); + auto hw_output_s0_w = hw_output_s0_x_xi->add_loop("hw_output_s0_w", 0, 512); + +//store is: hw_output.stencil(hw_output_s0_w, hw_output_s0_x_xi, hw_output_s0_y_yi) = output_glb.stencil(hw_output_s0_w, hw_output_s0_x_xi, hw_output_s0_y_yi) + auto hcompute_hw_output_stencil = hw_output_s0_w->add_op("op_hcompute_hw_output_stencil"); + hcompute_hw_output_stencil->add_function("hcompute_hw_output_stencil"); + hcompute_hw_output_stencil->add_load("output_glb_stencil", "hw_output_s0_y_yi", "hw_output_s0_x_xi", "hw_output_s0_w"); + hcompute_hw_output_stencil->add_store("hw_output_stencil", "hw_output_s0_y_yi", "hw_output_s0_x_xi", "hw_output_s0_w"); + + return prg; +} + + diff --git a/resnet5_1_compute.h b/resnet5_1_compute.h new file mode 100644 index 000000000..6721d24bc --- /dev/null +++ b/resnet5_1_compute.h @@ -0,0 +1,423 @@ +#pragma once +#include "hw_classes.h" +#include "clockwork_standard_compute_units.h" + + +//store is: input_glb.stencil(input_glb_s0_z, input_glb_s0_x, input_glb_s0_y) = input_host.stencil(input_glb_s0_z, input_glb_s0_x, input_glb_s0_y) +hw_uint<16> hcompute_input_glb_stencil(hw_uint<16>& input_host_stencil) { + int16_t _input_host_stencil_1 = (int16_t) input_host_stencil.extract<0, 15>(); + + return _input_host_stencil_1; +} + +//store is: kernel_glb.stencil(kernel_glb_s0_z, (kernel_glb_s0_w + 504), kernel_glb_s0_x, kernel_glb_s0_y) = kernel_host.stencil(kernel_glb_s0_z, kernel_glb_s0_w, kernel_glb_s0_x, kernel_glb_s0_y) +hw_uint<16> hcompute_kernel_glb_stencil(hw_uint<16>& kernel_host_stencil) { + int16_t _kernel_host_stencil_1 = (int16_t) kernel_host_stencil.extract<0, 15>(); + + return _kernel_host_stencil_1; +} + +//store is: output_cgra.stencil(0, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil() { + int16_t _686 = (int16_t)(0); + return _686; +} + +//store is: output_cgra.stencil(1, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_1() { + int16_t _689 = (int16_t)(0); + return _689; +} + +//store is: output_cgra.stencil(2, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_2() { + int16_t _692 = (int16_t)(0); + return _692; +} + +//store is: output_cgra.stencil(3, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_3() { + int16_t _695 = (int16_t)(0); + return _695; +} + +//store is: output_cgra.stencil(4, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_4() { + int16_t _698 = (int16_t)(0); + return _698; +} + +//store is: output_cgra.stencil(5, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_5() { + int16_t _701 = (int16_t)(0); + return _701; +} + +//store is: output_cgra.stencil(6, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_6() { + int16_t _704 = (int16_t)(0); + return _704; +} + +//store is: output_cgra.stencil(7, output_cgra_s0_x, output_cgra_s0_y) = (int16)0 +hw_uint<16> hcompute_output_cgra_stencil_7() { + int16_t _707 = (int16_t)(0); + return _707; +} + +//store is: input_cgra.stencil(input_cgra_s0_z_z_cgra, input_cgra_s0_x, input_cgra_s0_y) = input_glb.stencil(((output_cgra_s1_r_z_rz_glb*8) + input_cgra_s0_z_z_cgra), input_cgra_s0_x, input_cgra_s0_y) +hw_uint<16> hcompute_input_cgra_stencil(hw_uint<16>& input_glb_stencil) { + int16_t _input_glb_stencil_1 = (int16_t) input_glb_stencil.extract<0, 15>(); + + return _input_glb_stencil_1; +} + +//store is: kernel_cgra.stencil(kernel_cgra_s0_z_z_cgra, kernel_cgra_s0_w_w_cgra, kernel_cgra_s0_x, kernel_cgra_s0_y) = kernel_glb.stencil(((output_cgra_s1_r_z_rz_glb*8) + kernel_cgra_s0_z_z_cgra), (((output_glb_s0_w_w_glb*8) + kernel_cgra_s0_w_w_cgra) + 504), kernel_cgra_s0_x, kernel_cgra_s0_y) +hw_uint<16> hcompute_kernel_cgra_stencil(hw_uint<16>& kernel_glb_stencil) { + int16_t _kernel_glb_stencil_1 = (int16_t) kernel_glb_stencil.extract<0, 15>(); + + return _kernel_glb_stencil_1; +} + +//store is: output_cgra.stencil(0, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(0, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 0, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_8(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_1 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_2 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_3 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_4 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_5 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_6 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_7 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_8 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_1 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_2 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_3 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_4 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_5 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_6 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_7 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_8 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_1 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _719 = _kernel_cgra_stencil_1 * _input_cgra_stencil_1; + int16_t _720 = _kernel_cgra_stencil_2 * _input_cgra_stencil_2; + int16_t _721 = _kernel_cgra_stencil_3 * _input_cgra_stencil_3; + int16_t _722 = _kernel_cgra_stencil_4 * _input_cgra_stencil_4; + int16_t _723 = _kernel_cgra_stencil_5 * _input_cgra_stencil_5; + int16_t _724 = _kernel_cgra_stencil_6 * _input_cgra_stencil_6; + int16_t _725 = _kernel_cgra_stencil_7 * _input_cgra_stencil_7; + int16_t _726 = _kernel_cgra_stencil_8 * _input_cgra_stencil_8; + int16_t _727 = _725 + _726; + int16_t _728 = _724 + _727; + int16_t _729 = _723 + _728; + int16_t _730 = _722 + _729; + int16_t _731 = _721 + _730; + int16_t _732 = _720 + _731; + int16_t _733 = _output_cgra_stencil_1 + _732; + int16_t _734 = _719 + _733; + return _734; +} + +//store is: output_cgra.stencil(1, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(1, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 1, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_9(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_10 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_11 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_12 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_13 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_14 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_15 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_16 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_9 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_10 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_11 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_12 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_13 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_14 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_15 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_16 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_9 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_2 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _788 = _kernel_cgra_stencil_9 * _input_cgra_stencil_9; + int16_t _789 = _kernel_cgra_stencil_10 * _input_cgra_stencil_10; + int16_t _790 = _kernel_cgra_stencil_11 * _input_cgra_stencil_11; + int16_t _791 = _kernel_cgra_stencil_12 * _input_cgra_stencil_12; + int16_t _792 = _kernel_cgra_stencil_13 * _input_cgra_stencil_13; + int16_t _793 = _kernel_cgra_stencil_14 * _input_cgra_stencil_14; + int16_t _794 = _kernel_cgra_stencil_15 * _input_cgra_stencil_15; + int16_t _795 = _kernel_cgra_stencil_16 * _input_cgra_stencil_16; + int16_t _796 = _794 + _795; + int16_t _797 = _793 + _796; + int16_t _798 = _792 + _797; + int16_t _799 = _791 + _798; + int16_t _800 = _790 + _799; + int16_t _801 = _789 + _800; + int16_t _802 = _output_cgra_stencil_2 + _801; + int16_t _803 = _788 + _802; + return _803; +} + +//store is: output_cgra.stencil(2, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(2, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 2, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_10(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_17 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_18 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_19 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_20 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_21 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_22 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_23 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_24 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_17 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_18 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_19 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_20 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_21 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_22 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_23 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_24 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_3 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _857 = _kernel_cgra_stencil_17 * _input_cgra_stencil_17; + int16_t _858 = _kernel_cgra_stencil_18 * _input_cgra_stencil_18; + int16_t _859 = _kernel_cgra_stencil_19 * _input_cgra_stencil_19; + int16_t _860 = _kernel_cgra_stencil_20 * _input_cgra_stencil_20; + int16_t _861 = _kernel_cgra_stencil_21 * _input_cgra_stencil_21; + int16_t _862 = _kernel_cgra_stencil_22 * _input_cgra_stencil_22; + int16_t _863 = _kernel_cgra_stencil_23 * _input_cgra_stencil_23; + int16_t _864 = _kernel_cgra_stencil_24 * _input_cgra_stencil_24; + int16_t _865 = _863 + _864; + int16_t _866 = _862 + _865; + int16_t _867 = _861 + _866; + int16_t _868 = _860 + _867; + int16_t _869 = _859 + _868; + int16_t _870 = _858 + _869; + int16_t _871 = _output_cgra_stencil_3 + _870; + int16_t _872 = _857 + _871; + return _872; +} + +//store is: output_cgra.stencil(3, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(3, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 3, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_11(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_25 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_26 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_27 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_28 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_29 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_30 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_31 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_32 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_25 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_26 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_27 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_28 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_29 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_30 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_31 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_32 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_4 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _926 = _kernel_cgra_stencil_25 * _input_cgra_stencil_25; + int16_t _927 = _kernel_cgra_stencil_26 * _input_cgra_stencil_26; + int16_t _928 = _kernel_cgra_stencil_27 * _input_cgra_stencil_27; + int16_t _929 = _kernel_cgra_stencil_28 * _input_cgra_stencil_28; + int16_t _930 = _kernel_cgra_stencil_29 * _input_cgra_stencil_29; + int16_t _931 = _kernel_cgra_stencil_30 * _input_cgra_stencil_30; + int16_t _932 = _kernel_cgra_stencil_31 * _input_cgra_stencil_31; + int16_t _933 = _kernel_cgra_stencil_32 * _input_cgra_stencil_32; + int16_t _934 = _932 + _933; + int16_t _935 = _931 + _934; + int16_t _936 = _930 + _935; + int16_t _937 = _929 + _936; + int16_t _938 = _928 + _937; + int16_t _939 = _927 + _938; + int16_t _940 = _output_cgra_stencil_4 + _939; + int16_t _941 = _926 + _940; + return _941; +} + +//store is: output_cgra.stencil(4, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(4, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 4, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_12(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_33 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_34 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_35 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_36 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_37 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_38 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_39 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_40 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_33 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_34 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_35 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_36 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_37 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_38 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_39 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_40 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_5 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _995 = _kernel_cgra_stencil_33 * _input_cgra_stencil_33; + int16_t _996 = _kernel_cgra_stencil_34 * _input_cgra_stencil_34; + int16_t _997 = _kernel_cgra_stencil_35 * _input_cgra_stencil_35; + int16_t _998 = _kernel_cgra_stencil_36 * _input_cgra_stencil_36; + int16_t _999 = _kernel_cgra_stencil_37 * _input_cgra_stencil_37; + int16_t _1000 = _kernel_cgra_stencil_38 * _input_cgra_stencil_38; + int16_t _1001 = _kernel_cgra_stencil_39 * _input_cgra_stencil_39; + int16_t _1002 = _kernel_cgra_stencil_40 * _input_cgra_stencil_40; + int16_t _1003 = _1001 + _1002; + int16_t _1004 = _1000 + _1003; + int16_t _1005 = _999 + _1004; + int16_t _1006 = _998 + _1005; + int16_t _1007 = _997 + _1006; + int16_t _1008 = _996 + _1007; + int16_t _1009 = _output_cgra_stencil_5 + _1008; + int16_t _1010 = _995 + _1009; + return _1010; +} + +//store is: output_cgra.stencil(5, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(5, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 5, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_13(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_41 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_42 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_43 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_44 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_45 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_46 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_47 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_48 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_41 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_42 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_43 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_44 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_45 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_46 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_47 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_48 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_6 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _1064 = _kernel_cgra_stencil_41 * _input_cgra_stencil_41; + int16_t _1065 = _kernel_cgra_stencil_42 * _input_cgra_stencil_42; + int16_t _1066 = _kernel_cgra_stencil_43 * _input_cgra_stencil_43; + int16_t _1067 = _kernel_cgra_stencil_44 * _input_cgra_stencil_44; + int16_t _1068 = _kernel_cgra_stencil_45 * _input_cgra_stencil_45; + int16_t _1069 = _kernel_cgra_stencil_46 * _input_cgra_stencil_46; + int16_t _1070 = _kernel_cgra_stencil_47 * _input_cgra_stencil_47; + int16_t _1071 = _kernel_cgra_stencil_48 * _input_cgra_stencil_48; + int16_t _1072 = _1070 + _1071; + int16_t _1073 = _1069 + _1072; + int16_t _1074 = _1068 + _1073; + int16_t _1075 = _1067 + _1074; + int16_t _1076 = _1066 + _1075; + int16_t _1077 = _1065 + _1076; + int16_t _1078 = _output_cgra_stencil_6 + _1077; + int16_t _1079 = _1064 + _1078; + return _1079; +} + +//store is: output_cgra.stencil(6, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(6, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 6, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_14(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_49 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_50 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_51 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_52 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_53 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_54 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_55 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_56 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_49 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_50 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_51 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_52 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_53 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_54 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_55 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_56 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_7 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _1133 = _kernel_cgra_stencil_49 * _input_cgra_stencil_49; + int16_t _1134 = _kernel_cgra_stencil_50 * _input_cgra_stencil_50; + int16_t _1135 = _kernel_cgra_stencil_51 * _input_cgra_stencil_51; + int16_t _1136 = _kernel_cgra_stencil_52 * _input_cgra_stencil_52; + int16_t _1137 = _kernel_cgra_stencil_53 * _input_cgra_stencil_53; + int16_t _1138 = _kernel_cgra_stencil_54 * _input_cgra_stencil_54; + int16_t _1139 = _kernel_cgra_stencil_55 * _input_cgra_stencil_55; + int16_t _1140 = _kernel_cgra_stencil_56 * _input_cgra_stencil_56; + int16_t _1141 = _1139 + _1140; + int16_t _1142 = _1138 + _1141; + int16_t _1143 = _1137 + _1142; + int16_t _1144 = _1136 + _1143; + int16_t _1145 = _1135 + _1144; + int16_t _1146 = _1134 + _1145; + int16_t _1147 = _output_cgra_stencil_7 + _1146; + int16_t _1148 = _1133 + _1147; + return _1148; +} + +//store is: output_cgra.stencil(7, output_cgra_s1_x, output_cgra_s1_y) = ((kernel_cgra.stencil(0, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(0, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (output_cgra.stencil(7, output_cgra_s1_x, output_cgra_s1_y) + ((kernel_cgra.stencil(1, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(1, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(2, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(2, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(3, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(3, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(4, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(4, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(5, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(5, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + ((kernel_cgra.stencil(7, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(7, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))) + (kernel_cgra.stencil(6, 7, output_cgra_s1_r_x, output_cgra_s1_r_y)*input_cgra.stencil(6, ((output_cgra_s1_x*2) + output_cgra_s1_r_x), ((output_cgra_s1_y*2) + output_cgra_s1_r_y))))))))))) +hw_uint<16> hcompute_output_cgra_stencil_15(hw_uint<128>& input_cgra_stencil, hw_uint<128>& kernel_cgra_stencil, hw_uint<16>& output_cgra_stencil) { + int16_t _input_cgra_stencil_57 = (int16_t) input_cgra_stencil.extract<0, 15>(); + int16_t _input_cgra_stencil_58 = (int16_t) input_cgra_stencil.extract<16, 31>(); + int16_t _input_cgra_stencil_59 = (int16_t) input_cgra_stencil.extract<32, 47>(); + int16_t _input_cgra_stencil_60 = (int16_t) input_cgra_stencil.extract<48, 63>(); + int16_t _input_cgra_stencil_61 = (int16_t) input_cgra_stencil.extract<64, 79>(); + int16_t _input_cgra_stencil_62 = (int16_t) input_cgra_stencil.extract<80, 95>(); + int16_t _input_cgra_stencil_63 = (int16_t) input_cgra_stencil.extract<96, 111>(); + int16_t _input_cgra_stencil_64 = (int16_t) input_cgra_stencil.extract<112, 127>(); + + int16_t _kernel_cgra_stencil_57 = (int16_t) kernel_cgra_stencil.extract<0, 15>(); + int16_t _kernel_cgra_stencil_58 = (int16_t) kernel_cgra_stencil.extract<16, 31>(); + int16_t _kernel_cgra_stencil_59 = (int16_t) kernel_cgra_stencil.extract<32, 47>(); + int16_t _kernel_cgra_stencil_60 = (int16_t) kernel_cgra_stencil.extract<48, 63>(); + int16_t _kernel_cgra_stencil_61 = (int16_t) kernel_cgra_stencil.extract<64, 79>(); + int16_t _kernel_cgra_stencil_62 = (int16_t) kernel_cgra_stencil.extract<80, 95>(); + int16_t _kernel_cgra_stencil_63 = (int16_t) kernel_cgra_stencil.extract<96, 111>(); + int16_t _kernel_cgra_stencil_64 = (int16_t) kernel_cgra_stencil.extract<112, 127>(); + + int16_t _output_cgra_stencil_8 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + int16_t _1202 = _kernel_cgra_stencil_57 * _input_cgra_stencil_57; + int16_t _1203 = _kernel_cgra_stencil_58 * _input_cgra_stencil_58; + int16_t _1204 = _kernel_cgra_stencil_59 * _input_cgra_stencil_59; + int16_t _1205 = _kernel_cgra_stencil_60 * _input_cgra_stencil_60; + int16_t _1206 = _kernel_cgra_stencil_61 * _input_cgra_stencil_61; + int16_t _1207 = _kernel_cgra_stencil_62 * _input_cgra_stencil_62; + int16_t _1208 = _kernel_cgra_stencil_63 * _input_cgra_stencil_63; + int16_t _1209 = _kernel_cgra_stencil_64 * _input_cgra_stencil_64; + int16_t _1210 = _1208 + _1209; + int16_t _1211 = _1207 + _1210; + int16_t _1212 = _1206 + _1211; + int16_t _1213 = _1205 + _1212; + int16_t _1214 = _1204 + _1213; + int16_t _1215 = _1203 + _1214; + int16_t _1216 = _output_cgra_stencil_8 + _1215; + int16_t _1217 = _1202 + _1216; + return _1217; +} + +//store is: output_glb.stencil(((output_glb_s0_w_w_glb*8) + output_glb_s0_w_w_cgra), output_glb_s0_x_x_cgra, output_glb_s0_y_y_cgra) = output_cgra.stencil(output_glb_s0_w_w_cgra, output_glb_s0_x_x_cgra, output_glb_s0_y_y_cgra) +hw_uint<16> hcompute_output_glb_stencil(hw_uint<16>& output_cgra_stencil) { + int16_t _output_cgra_stencil_9 = (int16_t) output_cgra_stencil.extract<0, 15>(); + + return _output_cgra_stencil_9; +} + +//store is: hw_output.stencil(hw_output_s0_w, hw_output_s0_x_xi, hw_output_s0_y_yi) = output_glb.stencil(hw_output_s0_w, hw_output_s0_x_xi, hw_output_s0_y_yi) +hw_uint<16> hcompute_hw_output_stencil(hw_uint<16>& output_glb_stencil) { + int16_t _output_glb_stencil_1 = (int16_t) output_glb_stencil.extract<0, 15>(); + + return _output_glb_stencil_1; +} +