brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.4 KiB · 88b6534 Raw
227 lines · plain
1; RUN: llc -mtriple=hexagon < %s -enable-misched=false | FileCheck %s2 3; Test that LICM doesn't hoist an instruction incorrectly4; when register aliases are not processed. In this case, LICM hoists5; a register assignment of 0, but the register is defined as6; double register (with two and instructions) already.7 8; CHECK: [[REG0:r([0-9]+)]] = and9; CHECK: [[REG1:r([0-9]+)]] = and10; CHECK-NOT: [[REG0]] =11; CHECK-NOT: [[REG1]] =12; CHECK: .LBB13 14; Function Attrs: nounwind readnone15define i64 @f0(i64 %a0) #0 {16b0:17  %v0 = lshr i64 %a0, 118  %v1 = and i64 %v0, 614891469123651720519  %v2 = and i64 %a0, 614891469123651720520  br label %b121 22b1:                                               ; preds = %b1, %b023  %v3 = phi i64 [ %v2, %b0 ], [ %v197, %b1 ]24  %v4 = phi i64 [ %v1, %b0 ], [ %v196, %b1 ]25  %v5 = phi i64 [ 0, %b0 ], [ %v195, %b1 ]26  %v6 = phi i32 [ 0, %b0 ], [ %v198, %b1 ]27  %v7 = and i64 %v3, 128  %v8 = zext i32 %v6 to i6429  %v9 = shl i64 %v7, %v830  %v10 = and i64 %v4, 131  %v11 = add nuw nsw i32 %v6, 3232  %v12 = zext i32 %v11 to i6433  %v13 = shl i64 %v10, %v1234  %v14 = or i64 %v13, %v535  %v15 = or i64 %v14, %v936  %v16 = lshr i64 %v4, 237  %v17 = lshr i64 %v3, 238  %v18 = add nuw nsw i32 %v6, 139  %v19 = and i64 %v17, 140  %v20 = zext i32 %v18 to i6441  %v21 = shl i64 %v19, %v2042  %v22 = and i64 %v16, 143  %v23 = add nsw i32 %v6, 3344  %v24 = zext i32 %v23 to i6445  %v25 = shl i64 %v22, %v2446  %v26 = or i64 %v25, %v1547  %v27 = or i64 %v26, %v2148  %v28 = lshr i64 %v4, 449  %v29 = lshr i64 %v3, 450  %v30 = add nsw i32 %v6, 251  %v31 = and i64 %v29, 152  %v32 = zext i32 %v30 to i6453  %v33 = shl i64 %v31, %v3254  %v34 = and i64 %v28, 155  %v35 = add nsw i32 %v6, 3456  %v36 = zext i32 %v35 to i6457  %v37 = shl i64 %v34, %v3658  %v38 = or i64 %v37, %v2759  %v39 = or i64 %v38, %v3360  %v40 = lshr i64 %v4, 661  %v41 = lshr i64 %v3, 662  %v42 = add nsw i32 %v6, 363  %v43 = and i64 %v41, 164  %v44 = zext i32 %v42 to i6465  %v45 = shl i64 %v43, %v4466  %v46 = and i64 %v40, 167  %v47 = add nsw i32 %v6, 3568  %v48 = zext i32 %v47 to i6469  %v49 = shl i64 %v46, %v4870  %v50 = or i64 %v49, %v3971  %v51 = or i64 %v50, %v4572  %v52 = lshr i64 %v4, 873  %v53 = lshr i64 %v3, 874  %v54 = add nsw i32 %v6, 475  %v55 = and i64 %v53, 176  %v56 = zext i32 %v54 to i6477  %v57 = shl i64 %v55, %v5678  %v58 = and i64 %v52, 179  %v59 = add nsw i32 %v6, 3680  %v60 = zext i32 %v59 to i6481  %v61 = shl i64 %v58, %v6082  %v62 = or i64 %v61, %v5183  %v63 = or i64 %v62, %v5784  %v64 = lshr i64 %v4, 1085  %v65 = lshr i64 %v3, 1086  %v66 = add nsw i32 %v6, 587  %v67 = and i64 %v65, 188  %v68 = zext i32 %v66 to i6489  %v69 = shl i64 %v67, %v6890  %v70 = and i64 %v64, 191  %v71 = add nsw i32 %v6, 3792  %v72 = zext i32 %v71 to i6493  %v73 = shl i64 %v70, %v7294  %v74 = or i64 %v73, %v6395  %v75 = or i64 %v74, %v6996  %v76 = lshr i64 %v4, 1297  %v77 = lshr i64 %v3, 1298  %v78 = add nsw i32 %v6, 699  %v79 = and i64 %v77, 1100  %v80 = zext i32 %v78 to i64101  %v81 = shl i64 %v79, %v80102  %v82 = and i64 %v76, 1103  %v83 = add nsw i32 %v6, 38104  %v84 = zext i32 %v83 to i64105  %v85 = shl i64 %v82, %v84106  %v86 = or i64 %v85, %v75107  %v87 = or i64 %v86, %v81108  %v88 = lshr i64 %v4, 14109  %v89 = lshr i64 %v3, 14110  %v90 = add nsw i32 %v6, 7111  %v91 = and i64 %v89, 1112  %v92 = zext i32 %v90 to i64113  %v93 = shl i64 %v91, %v92114  %v94 = and i64 %v88, 1115  %v95 = add nsw i32 %v6, 39116  %v96 = zext i32 %v95 to i64117  %v97 = shl i64 %v94, %v96118  %v98 = or i64 %v97, %v87119  %v99 = or i64 %v98, %v93120  %v100 = lshr i64 %v4, 16121  %v101 = lshr i64 %v3, 16122  %v102 = add nsw i32 %v6, 8123  %v103 = and i64 %v101, 1124  %v104 = zext i32 %v102 to i64125  %v105 = shl i64 %v103, %v104126  %v106 = and i64 %v100, 1127  %v107 = add nsw i32 %v6, 40128  %v108 = zext i32 %v107 to i64129  %v109 = shl i64 %v106, %v108130  %v110 = or i64 %v109, %v99131  %v111 = or i64 %v110, %v105132  %v112 = lshr i64 %v4, 18133  %v113 = lshr i64 %v3, 18134  %v114 = add nsw i32 %v6, 9135  %v115 = and i64 %v113, 1136  %v116 = zext i32 %v114 to i64137  %v117 = shl i64 %v115, %v116138  %v118 = and i64 %v112, 1139  %v119 = add nsw i32 %v6, 41140  %v120 = zext i32 %v119 to i64141  %v121 = shl i64 %v118, %v120142  %v122 = or i64 %v121, %v111143  %v123 = or i64 %v122, %v117144  %v124 = lshr i64 %v4, 20145  %v125 = lshr i64 %v3, 20146  %v126 = add nsw i32 %v6, 10147  %v127 = and i64 %v125, 1148  %v128 = zext i32 %v126 to i64149  %v129 = shl i64 %v127, %v128150  %v130 = and i64 %v124, 1151  %v131 = add nsw i32 %v6, 42152  %v132 = zext i32 %v131 to i64153  %v133 = shl i64 %v130, %v132154  %v134 = or i64 %v133, %v123155  %v135 = or i64 %v134, %v129156  %v136 = lshr i64 %v4, 22157  %v137 = lshr i64 %v3, 22158  %v138 = add nsw i32 %v6, 11159  %v139 = and i64 %v137, 1160  %v140 = zext i32 %v138 to i64161  %v141 = shl i64 %v139, %v140162  %v142 = and i64 %v136, 1163  %v143 = add nsw i32 %v6, 43164  %v144 = zext i32 %v143 to i64165  %v145 = shl i64 %v142, %v144166  %v146 = or i64 %v145, %v135167  %v147 = or i64 %v146, %v141168  %v148 = lshr i64 %v4, 24169  %v149 = lshr i64 %v3, 24170  %v150 = add nsw i32 %v6, 12171  %v151 = and i64 %v149, 1172  %v152 = zext i32 %v150 to i64173  %v153 = shl i64 %v151, %v152174  %v154 = and i64 %v148, 1175  %v155 = add nsw i32 %v6, 44176  %v156 = zext i32 %v155 to i64177  %v157 = shl i64 %v154, %v156178  %v158 = or i64 %v157, %v147179  %v159 = or i64 %v158, %v153180  %v160 = lshr i64 %v4, 26181  %v161 = lshr i64 %v3, 26182  %v162 = add nsw i32 %v6, 13183  %v163 = and i64 %v161, 1184  %v164 = zext i32 %v162 to i64185  %v165 = shl i64 %v163, %v164186  %v166 = and i64 %v160, 1187  %v167 = add nsw i32 %v6, 45188  %v168 = zext i32 %v167 to i64189  %v169 = shl i64 %v166, %v168190  %v170 = or i64 %v169, %v159191  %v171 = or i64 %v170, %v165192  %v172 = lshr i64 %v4, 28193  %v173 = lshr i64 %v3, 28194  %v174 = add nsw i32 %v6, 14195  %v175 = and i64 %v173, 1196  %v176 = zext i32 %v174 to i64197  %v177 = shl i64 %v175, %v176198  %v178 = and i64 %v172, 1199  %v179 = add nsw i32 %v6, 46200  %v180 = zext i32 %v179 to i64201  %v181 = shl i64 %v178, %v180202  %v182 = or i64 %v181, %v171203  %v183 = or i64 %v182, %v177204  %v184 = lshr i64 %v4, 30205  %v185 = lshr i64 %v3, 30206  %v186 = add nsw i32 %v6, 15207  %v187 = and i64 %v185, 1208  %v188 = zext i32 %v186 to i64209  %v189 = shl i64 %v187, %v188210  %v190 = and i64 %v184, 1211  %v191 = add nsw i32 %v6, 47212  %v192 = zext i32 %v191 to i64213  %v193 = shl i64 %v190, %v192214  %v194 = or i64 %v193, %v183215  %v195 = or i64 %v194, %v189216  %v196 = lshr i64 %v4, 32217  %v197 = lshr i64 %v3, 32218  %v198 = add nsw i32 %v6, 16219  %v199 = icmp eq i32 %v198, 32220  br i1 %v199, label %b2, label %b1221 222b2:                                               ; preds = %b1223  ret i64 %v195224}225 226attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" }227