brintos

brintos / llvm-project-archived public Read only

0
0
Text · 24.4 KiB · 7595abc Raw
625 lines · plain
1; RUN: opt < %s -mtriple=aarch64--linux-gnu -passes="print<cost-model>" 2>&1 -disable-output | FileCheck %s --check-prefix=COST2; RUN: llc < %s -mtriple=aarch64--linux-gnu | FileCheck %s --check-prefix=CODE3 4target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"5 6; COST-LABEL: uaddl_8h7; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i8> %a to <8 x i16>8; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <8 x i8> %b to <8 x i16>9; CODE-LABEL: uaddl_8h10; CODE:       uaddl v0.8h, v0.8b, v1.8b11define <8 x i16> @uaddl_8h(<8 x i8> %a, <8 x i8> %b) {12  %tmp0 = zext <8 x i8> %a to <8 x i16>13  %tmp1 = zext <8 x i8> %b to <8 x i16>14  %tmp2 = add <8 x i16> %tmp0, %tmp115  ret <8 x i16> %tmp216}17 18; COST-LABEL: uaddl_4s19; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i16> %a to <4 x i32>20; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <4 x i16> %b to <4 x i32>21; CODE-LABEL: uaddl_4s22; CODE:       uaddl v0.4s, v0.4h, v1.4h23define <4 x i32> @uaddl_4s(<4 x i16> %a, <4 x i16> %b) {24  %tmp0 = zext <4 x i16> %a to <4 x i32>25  %tmp1 = zext <4 x i16> %b to <4 x i32>26  %tmp2 = add <4 x i32> %tmp0, %tmp127  ret <4 x i32> %tmp228}29 30; COST-LABEL: uaddl_2d31; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <2 x i32> %a to <2 x i64>32; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <2 x i32> %b to <2 x i64>33; CODE-LABEL: uaddl_2d34; CODE:       uaddl v0.2d, v0.2s, v1.2s35define <2 x i64> @uaddl_2d(<2 x i32> %a, <2 x i32> %b) {36  %tmp0 = zext <2 x i32> %a to <2 x i64>37  %tmp1 = zext <2 x i32> %b to <2 x i64>38  %tmp2 = add <2 x i64> %tmp0, %tmp139  ret <2 x i64> %tmp240}41 42; COST-LABEL: uaddl2_8h43; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <16 x i8> %a to <16 x i16>44; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <16 x i8> %b to <16 x i16>45; CODE-LABEL: uaddl2_8h46; CODE:       uaddl2 v2.8h, v0.16b, v1.16b47; CODE-NEXT:  uaddl v0.8h, v0.8b, v1.8b48define <16 x i16> @uaddl2_8h(<16 x i8> %a, <16 x i8> %b) {49  %tmp0 = zext <16 x i8> %a to <16 x i16>50  %tmp1 = zext <16 x i8> %b to <16 x i16>51  %tmp2 = add <16 x i16> %tmp0, %tmp152  ret <16 x i16> %tmp253}54 55; COST-LABEL: uaddl2_4s56; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i16> %a to <8 x i32>57; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <8 x i16> %b to <8 x i32>58; CODE-LABEL: uaddl2_4s59; CODE:       uaddl2 v2.4s, v0.8h, v1.8h60; CODE-NEXT:  uaddl v0.4s, v0.4h, v1.4h61define <8 x i32> @uaddl2_4s(<8 x i16> %a, <8 x i16> %b) {62  %tmp0 = zext <8 x i16> %a to <8 x i32>63  %tmp1 = zext <8 x i16> %b to <8 x i32>64  %tmp2 = add <8 x i32> %tmp0, %tmp165  ret <8 x i32> %tmp266}67 68; COST-LABEL: uaddl2_2d69; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i32> %a to <4 x i64>70; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <4 x i32> %b to <4 x i64>71; CODE-LABEL: uaddl2_2d72; CODE:       uaddl2 v2.2d, v0.4s, v1.4s73; CODE-NEXT:  uaddl v0.2d, v0.2s, v1.2s74define <4 x i64> @uaddl2_2d(<4 x i32> %a, <4 x i32> %b) {75  %tmp0 = zext <4 x i32> %a to <4 x i64>76  %tmp1 = zext <4 x i32> %b to <4 x i64>77  %tmp2 = add <4 x i64> %tmp0, %tmp178  ret <4 x i64> %tmp279}80 81; COST-LABEL: saddl_8h82; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i8> %a to <8 x i16>83; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <8 x i8> %b to <8 x i16>84; CODE-LABEL: saddl_8h85; CODE:       saddl v0.8h, v0.8b, v1.8b86define <8 x i16> @saddl_8h(<8 x i8> %a, <8 x i8> %b) {87  %tmp0 = sext <8 x i8> %a to <8 x i16>88  %tmp1 = sext <8 x i8> %b to <8 x i16>89  %tmp2 = add <8 x i16> %tmp0, %tmp190  ret <8 x i16> %tmp291}92 93; COST-LABEL: saddl_4s94; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i16> %a to <4 x i32>95; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <4 x i16> %b to <4 x i32>96; CODE-LABEL: saddl_4s97; CODE:       saddl v0.4s, v0.4h, v1.4h98define <4 x i32> @saddl_4s(<4 x i16> %a, <4 x i16> %b) {99  %tmp0 = sext <4 x i16> %a to <4 x i32>100  %tmp1 = sext <4 x i16> %b to <4 x i32>101  %tmp2 = add <4 x i32> %tmp0, %tmp1102  ret <4 x i32> %tmp2103}104 105; COST-LABEL: saddl_2d106; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <2 x i32> %a to <2 x i64>107; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <2 x i32> %b to <2 x i64>108; CODE-LABEL: saddl_2d109; CODE:       saddl v0.2d, v0.2s, v1.2s110define <2 x i64> @saddl_2d(<2 x i32> %a, <2 x i32> %b) {111  %tmp0 = sext <2 x i32> %a to <2 x i64>112  %tmp1 = sext <2 x i32> %b to <2 x i64>113  %tmp2 = add <2 x i64> %tmp0, %tmp1114  ret <2 x i64> %tmp2115}116 117; COST-LABEL: saddl2_8h118; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <16 x i8> %a to <16 x i16>119; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <16 x i8> %b to <16 x i16>120; CODE-LABEL: saddl2_8h121; CODE:       saddl2 v2.8h, v0.16b, v1.16b122; CODE-NEXT:  saddl v0.8h, v0.8b, v1.8b123define <16 x i16> @saddl2_8h(<16 x i8> %a, <16 x i8> %b) {124  %tmp0 = sext <16 x i8> %a to <16 x i16>125  %tmp1 = sext <16 x i8> %b to <16 x i16>126  %tmp2 = add <16 x i16> %tmp0, %tmp1127  ret <16 x i16> %tmp2128}129 130; COST-LABEL: saddl2_4s131; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i16> %a to <8 x i32>132; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <8 x i16> %b to <8 x i32>133; CODE-LABEL: saddl2_4s134; CODE:       saddl2 v2.4s, v0.8h, v1.8h135; CODE-NEXT:  saddl v0.4s, v0.4h, v1.4h136define <8 x i32> @saddl2_4s(<8 x i16> %a, <8 x i16> %b) {137  %tmp0 = sext <8 x i16> %a to <8 x i32>138  %tmp1 = sext <8 x i16> %b to <8 x i32>139  %tmp2 = add <8 x i32> %tmp0, %tmp1140  ret <8 x i32> %tmp2141}142 143; COST-LABEL: saddl2_2d144; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i32> %a to <4 x i64>145; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <4 x i32> %b to <4 x i64>146; CODE-LABEL: saddl2_2d147; CODE:       saddl2 v2.2d, v0.4s, v1.4s148; CODE-NEXT:  saddl v0.2d, v0.2s, v1.2s149define <4 x i64> @saddl2_2d(<4 x i32> %a, <4 x i32> %b) {150  %tmp0 = sext <4 x i32> %a to <4 x i64>151  %tmp1 = sext <4 x i32> %b to <4 x i64>152  %tmp2 = add <4 x i64> %tmp0, %tmp1153  ret <4 x i64> %tmp2154}155 156; COST-LABEL: usubl_8h157; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i8> %a to <8 x i16>158; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <8 x i8> %b to <8 x i16>159; CODE-LABEL: usubl_8h160; CODE:       usubl v0.8h, v0.8b, v1.8b161define <8 x i16> @usubl_8h(<8 x i8> %a, <8 x i8> %b) {162  %tmp0 = zext <8 x i8> %a to <8 x i16>163  %tmp1 = zext <8 x i8> %b to <8 x i16>164  %tmp2 = sub <8 x i16> %tmp0, %tmp1165  ret <8 x i16> %tmp2166}167 168; COST-LABEL: usubl_4s169; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i16> %a to <4 x i32>170; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <4 x i16> %b to <4 x i32>171; CODE-LABEL: usubl_4s172; CODE:       usubl v0.4s, v0.4h, v1.4h173define <4 x i32> @usubl_4s(<4 x i16> %a, <4 x i16> %b) {174  %tmp0 = zext <4 x i16> %a to <4 x i32>175  %tmp1 = zext <4 x i16> %b to <4 x i32>176  %tmp2 = sub <4 x i32> %tmp0, %tmp1177  ret <4 x i32> %tmp2178}179 180; COST-LABEL: usubl_2d181; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <2 x i32> %a to <2 x i64>182; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <2 x i32> %b to <2 x i64>183; CODE-LABEL: usubl_2d184; CODE:       usubl v0.2d, v0.2s, v1.2s185define <2 x i64> @usubl_2d(<2 x i32> %a, <2 x i32> %b) {186  %tmp0 = zext <2 x i32> %a to <2 x i64>187  %tmp1 = zext <2 x i32> %b to <2 x i64>188  %tmp2 = sub <2 x i64> %tmp0, %tmp1189  ret <2 x i64> %tmp2190}191 192; COST-LABEL: usubl2_8h193; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <16 x i8> %a to <16 x i16>194; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <16 x i8> %b to <16 x i16>195; CODE-LABEL: usubl2_8h196; CODE:       usubl2 v2.8h, v0.16b, v1.16b197; CODE-NEXT:  usubl v0.8h, v0.8b, v1.8b198define <16 x i16> @usubl2_8h(<16 x i8> %a, <16 x i8> %b) {199  %tmp0 = zext <16 x i8> %a to <16 x i16>200  %tmp1 = zext <16 x i8> %b to <16 x i16>201  %tmp2 = sub <16 x i16> %tmp0, %tmp1202  ret <16 x i16> %tmp2203}204 205; COST-LABEL: usubl2_4s206; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i16> %a to <8 x i32>207; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <8 x i16> %b to <8 x i32>208; CODE-LABEL: usubl2_4s209; CODE:       usubl2 v2.4s, v0.8h, v1.8h210; CODE-NEXT:  usubl v0.4s, v0.4h, v1.4h211define <8 x i32> @usubl2_4s(<8 x i16> %a, <8 x i16> %b) {212  %tmp0 = zext <8 x i16> %a to <8 x i32>213  %tmp1 = zext <8 x i16> %b to <8 x i32>214  %tmp2 = sub <8 x i32> %tmp0, %tmp1215  ret <8 x i32> %tmp2216}217 218; COST-LABEL: usubl2_2d219; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i32> %a to <4 x i64>220; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <4 x i32> %b to <4 x i64>221; CODE-LABEL: usubl2_2d222; CODE:       usubl2 v2.2d, v0.4s, v1.4s223; CODE-NEXT:  usubl v0.2d, v0.2s, v1.2s224define <4 x i64> @usubl2_2d(<4 x i32> %a, <4 x i32> %b) {225  %tmp0 = zext <4 x i32> %a to <4 x i64>226  %tmp1 = zext <4 x i32> %b to <4 x i64>227  %tmp2 = sub <4 x i64> %tmp0, %tmp1228  ret <4 x i64> %tmp2229}230 231; COST-LABEL: ssubl_8h232; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i8> %a to <8 x i16>233; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <8 x i8> %b to <8 x i16>234; CODE-LABEL: ssubl_8h235; CODE:       ssubl v0.8h, v0.8b, v1.8b236define <8 x i16> @ssubl_8h(<8 x i8> %a, <8 x i8> %b) {237  %tmp0 = sext <8 x i8> %a to <8 x i16>238  %tmp1 = sext <8 x i8> %b to <8 x i16>239  %tmp2 = sub <8 x i16> %tmp0, %tmp1240  ret <8 x i16> %tmp2241}242 243; COST-LABEL: ssubl_4s244; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i16> %a to <4 x i32>245; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <4 x i16> %b to <4 x i32>246; CODE-LABEL: ssubl_4s247; CODE:       ssubl v0.4s, v0.4h, v1.4h248define <4 x i32> @ssubl_4s(<4 x i16> %a, <4 x i16> %b) {249  %tmp0 = sext <4 x i16> %a to <4 x i32>250  %tmp1 = sext <4 x i16> %b to <4 x i32>251  %tmp2 = sub <4 x i32> %tmp0, %tmp1252  ret <4 x i32> %tmp2253}254 255; COST-LABEL: ssubl_2d256; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <2 x i32> %a to <2 x i64>257; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <2 x i32> %b to <2 x i64>258; CODE-LABEL: ssubl_2d259; CODE:       ssubl v0.2d, v0.2s, v1.2s260define <2 x i64> @ssubl_2d(<2 x i32> %a, <2 x i32> %b) {261  %tmp0 = sext <2 x i32> %a to <2 x i64>262  %tmp1 = sext <2 x i32> %b to <2 x i64>263  %tmp2 = sub <2 x i64> %tmp0, %tmp1264  ret <2 x i64> %tmp2265}266 267; COST-LABEL: ssubl2_8h268; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <16 x i8> %a to <16 x i16>269; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <16 x i8> %b to <16 x i16>270; CODE-LABEL: ssubl2_8h271; CODE:       ssubl2 v2.8h, v0.16b, v1.16b272; CODE-NEXT:  ssubl v0.8h, v0.8b, v1.8b273define <16 x i16> @ssubl2_8h(<16 x i8> %a, <16 x i8> %b) {274  %tmp0 = sext <16 x i8> %a to <16 x i16>275  %tmp1 = sext <16 x i8> %b to <16 x i16>276  %tmp2 = sub <16 x i16> %tmp0, %tmp1277  ret <16 x i16> %tmp2278}279 280; COST-LABEL: ssubl2_4s281; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i16> %a to <8 x i32>282; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <8 x i16> %b to <8 x i32>283; CODE-LABEL: ssubl2_4s284; CODE:       ssubl2 v2.4s, v0.8h, v1.8h285; CODE-NEXT:  ssubl v0.4s, v0.4h, v1.4h286define <8 x i32> @ssubl2_4s(<8 x i16> %a, <8 x i16> %b) {287  %tmp0 = sext <8 x i16> %a to <8 x i32>288  %tmp1 = sext <8 x i16> %b to <8 x i32>289  %tmp2 = sub <8 x i32> %tmp0, %tmp1290  ret <8 x i32> %tmp2291}292 293; COST-LABEL: ssubl2_2d294; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i32> %a to <4 x i64>295; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = sext <4 x i32> %b to <4 x i64>296; CODE-LABEL: ssubl2_2d297; CODE:       ssubl2 v2.2d, v0.4s, v1.4s298; CODE-NEXT:  ssubl v0.2d, v0.2s, v1.2s299define <4 x i64> @ssubl2_2d(<4 x i32> %a, <4 x i32> %b) {300  %tmp0 = sext <4 x i32> %a to <4 x i64>301  %tmp1 = sext <4 x i32> %b to <4 x i64>302  %tmp2 = sub <4 x i64> %tmp0, %tmp1303  ret <4 x i64> %tmp2304}305 306; COST-LABEL: uaddw_8h307; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i8> %a to <8 x i16>308; CODE-LABEL: uaddw_8h309; CODE:       uaddw v0.8h, v1.8h, v0.8b310define <8 x i16> @uaddw_8h(<8 x i8> %a, <8 x i16> %b) {311  %tmp0 = zext <8 x i8> %a to <8 x i16>312  %tmp1 = add <8 x i16> %b, %tmp0313  ret <8 x i16> %tmp1314}315 316; COST-LABEL: uaddw_4s317; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i16> %a to <4 x i32>318; CODE-LABEL: uaddw_4s319; CODE:       uaddw v0.4s, v1.4s, v0.4h320define <4 x i32> @uaddw_4s(<4 x i16> %a, <4 x i32> %b) {321  %tmp0 = zext <4 x i16> %a to <4 x i32>322  %tmp1 = add <4 x i32> %b, %tmp0323  ret <4 x i32> %tmp1324}325 326; COST-LABEL: uaddw_2d327; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <2 x i32> %a to <2 x i64>328; CODE-LABEL: uaddw_2d329; CODE:       uaddw v0.2d, v1.2d, v0.2s330define <2 x i64> @uaddw_2d(<2 x i32> %a, <2 x i64> %b) {331  %tmp0 = zext <2 x i32> %a to <2 x i64>332  %tmp1 = add <2 x i64> %b, %tmp0333  ret <2 x i64> %tmp1334}335 336; COST-LABEL: uaddw2_8h337; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <16 x i8> %a to <16 x i16>338; CODE-LABEL: uaddw2_8h339; CODE:       uaddw2 v2.8h, v2.8h, v0.16b340; CODE-NEXT:  uaddw v0.8h, v1.8h, v0.8b341define <16 x i16> @uaddw2_8h(<16 x i8> %a, <16 x i16> %b) {342  %tmp0 = zext <16 x i8> %a to <16 x i16>343  %tmp1 = add <16 x i16> %b, %tmp0344  ret <16 x i16> %tmp1345}346 347; COST-LABEL: uaddw2_4s348; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i16> %a to <8 x i32>349; CODE-LABEL: uaddw2_4s350; CODE:       uaddw2 v2.4s, v2.4s, v0.8h351; CODE-NEXT:  uaddw v0.4s, v1.4s, v0.4h352define <8 x i32> @uaddw2_4s(<8 x i16> %a, <8 x i32> %b) {353  %tmp0 = zext <8 x i16> %a to <8 x i32>354  %tmp1 = add <8 x i32> %b, %tmp0355  ret <8 x i32> %tmp1356}357 358; COST-LABEL: uaddw2_2d359; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i32> %a to <4 x i64>360; CODE-LABEL: uaddw2_2d361; CODE:       uaddw2 v2.2d, v2.2d, v0.4s362; CODE-NEXT:  uaddw v0.2d, v1.2d, v0.2s363define <4 x i64> @uaddw2_2d(<4 x i32> %a, <4 x i64> %b) {364  %tmp0 = zext <4 x i32> %a to <4 x i64>365  %tmp1 = add <4 x i64> %b, %tmp0366  ret <4 x i64> %tmp1367}368 369; COST-LABEL: saddw_8h370; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i8> %a to <8 x i16>371; CODE-LABEL: saddw_8h372; CODE:       saddw v0.8h, v1.8h, v0.8b373define <8 x i16> @saddw_8h(<8 x i8> %a, <8 x i16> %b) {374  %tmp0 = sext <8 x i8> %a to <8 x i16>375  %tmp1 = add <8 x i16> %b, %tmp0376  ret <8 x i16> %tmp1377}378 379; COST-LABEL: saddw_4s380; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i16> %a to <4 x i32>381; CODE-LABEL: saddw_4s382; CODE:       saddw v0.4s, v1.4s, v0.4h383define <4 x i32> @saddw_4s(<4 x i16> %a, <4 x i32> %b) {384  %tmp0 = sext <4 x i16> %a to <4 x i32>385  %tmp1 = add <4 x i32> %b, %tmp0386  ret <4 x i32> %tmp1387}388 389; COST-LABEL: saddw_2d390; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <2 x i32> %a to <2 x i64>391; CODE-LABEL: saddw_2d392; CODE:       saddw v0.2d, v1.2d, v0.2s393define <2 x i64> @saddw_2d(<2 x i32> %a, <2 x i64> %b) {394  %tmp0 = sext <2 x i32> %a to <2 x i64>395  %tmp1 = add <2 x i64> %b, %tmp0396  ret <2 x i64> %tmp1397}398 399; COST-LABEL: saddw2_8h400; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <16 x i8> %a to <16 x i16>401; CODE-LABEL: saddw2_8h402; CODE:       saddw2 v2.8h, v2.8h, v0.16b403; CODE-NEXT:  saddw v0.8h, v1.8h, v0.8b404define <16 x i16> @saddw2_8h(<16 x i8> %a, <16 x i16> %b) {405  %tmp0 = sext <16 x i8> %a to <16 x i16>406  %tmp1 = add <16 x i16> %b, %tmp0407  ret <16 x i16> %tmp1408}409 410; COST-LABEL: saddw2_4s411; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i16> %a to <8 x i32>412; CODE-LABEL: saddw2_4s413; CODE:       saddw2 v2.4s, v2.4s, v0.8h414; CODE-NEXT:  saddw v0.4s, v1.4s, v0.4h415define <8 x i32> @saddw2_4s(<8 x i16> %a, <8 x i32> %b) {416  %tmp0 = sext <8 x i16> %a to <8 x i32>417  %tmp1 = add <8 x i32> %b, %tmp0418  ret <8 x i32> %tmp1419}420 421; COST-LABEL: saddw2_2d422; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i32> %a to <4 x i64>423; CODE-LABEL: saddw2_2d424; CODE:       saddw2 v2.2d, v2.2d, v0.4s425; CODE-NEXT:  saddw v0.2d, v1.2d, v0.2s426define <4 x i64> @saddw2_2d(<4 x i32> %a, <4 x i64> %b) {427  %tmp0 = sext <4 x i32> %a to <4 x i64>428  %tmp1 = add <4 x i64> %b, %tmp0429  ret <4 x i64> %tmp1430}431 432; COST-LABEL: usubw_8h433; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i8> %a to <8 x i16>434; CODE-LABEL: usubw_8h435; CODE:       usubw v0.8h, v1.8h, v0.8b436define <8 x i16> @usubw_8h(<8 x i8> %a, <8 x i16> %b) {437  %tmp0 = zext <8 x i8> %a to <8 x i16>438  %tmp1 = sub <8 x i16> %b, %tmp0439  ret <8 x i16> %tmp1440}441 442; COST-LABEL: usubw_4s443; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i16> %a to <4 x i32>444; CODE-LABEL: usubw_4s445; CODE:       usubw v0.4s, v1.4s, v0.4h446define <4 x i32> @usubw_4s(<4 x i16> %a, <4 x i32> %b) {447  %tmp0 = zext <4 x i16> %a to <4 x i32>448  %tmp1 = sub <4 x i32> %b, %tmp0449  ret <4 x i32> %tmp1450}451 452; COST-LABEL: usubw_2d453; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <2 x i32> %a to <2 x i64>454; CODE-LABEL: usubw_2d455; CODE:       usubw v0.2d, v1.2d, v0.2s456define <2 x i64> @usubw_2d(<2 x i32> %a, <2 x i64> %b) {457  %tmp0 = zext <2 x i32> %a to <2 x i64>458  %tmp1 = sub <2 x i64> %b, %tmp0459  ret <2 x i64> %tmp1460}461 462; COST-LABEL: usubw2_8h463; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <16 x i8> %a to <16 x i16>464; CODE-LABEL: usubw2_8h465; CODE:       usubw2 v2.8h, v2.8h, v0.16b466; CODE-NEXT:  usubw v0.8h, v1.8h, v0.8b467define <16 x i16> @usubw2_8h(<16 x i8> %a, <16 x i16> %b) {468  %tmp0 = zext <16 x i8> %a to <16 x i16>469  %tmp1 = sub <16 x i16> %b, %tmp0470  ret <16 x i16> %tmp1471}472 473; COST-LABEL: usubw2_4s474; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <8 x i16> %a to <8 x i32>475; CODE-LABEL: usubw2_4s476; CODE:       usubw2 v2.4s, v2.4s, v0.8h477; CODE-NEXT:  usubw v0.4s, v1.4s, v0.4h478define <8 x i32> @usubw2_4s(<8 x i16> %a, <8 x i32> %b) {479  %tmp0 = zext <8 x i16> %a to <8 x i32>480  %tmp1 = sub <8 x i32> %b, %tmp0481  ret <8 x i32> %tmp1482}483 484; COST-LABEL: usubw2_2d485; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = zext <4 x i32> %a to <4 x i64>486; CODE-LABEL: usubw2_2d487; CODE:       usubw2 v2.2d, v2.2d, v0.4s488; CODE-NEXT:  usubw v0.2d, v1.2d, v0.2s489define <4 x i64> @usubw2_2d(<4 x i32> %a, <4 x i64> %b) {490  %tmp0 = zext <4 x i32> %a to <4 x i64>491  %tmp1 = sub <4 x i64> %b, %tmp0492  ret <4 x i64> %tmp1493}494 495; COST-LABEL: ssubw_8h496; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i8> %a to <8 x i16>497; CODE-LABEL: ssubw_8h498; CODE:       ssubw v0.8h, v1.8h, v0.8b499define <8 x i16> @ssubw_8h(<8 x i8> %a, <8 x i16> %b) {500  %tmp0 = sext <8 x i8> %a to <8 x i16>501  %tmp1 = sub <8 x i16> %b, %tmp0502  ret <8 x i16> %tmp1503}504 505; COST-LABEL: ssubw_4s506; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i16> %a to <4 x i32>507; CODE-LABEL: ssubw_4s508; CODE:       ssubw v0.4s, v1.4s, v0.4h509define <4 x i32> @ssubw_4s(<4 x i16> %a, <4 x i32> %b) {510  %tmp0 = sext <4 x i16> %a to <4 x i32>511  %tmp1 = sub <4 x i32> %b, %tmp0512  ret <4 x i32> %tmp1513}514 515; COST-LABEL: ssubw_2d516; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <2 x i32> %a to <2 x i64>517; CODE-LABEL: ssubw_2d518; CODE:       ssubw v0.2d, v1.2d, v0.2s519define <2 x i64> @ssubw_2d(<2 x i32> %a, <2 x i64> %b) {520  %tmp0 = sext <2 x i32> %a to <2 x i64>521  %tmp1 = sub <2 x i64> %b, %tmp0522  ret <2 x i64> %tmp1523}524 525; COST-LABEL: ssubw2_8h526; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <16 x i8> %a to <16 x i16>527; CODE-LABEL: ssubw2_8h528; CODE:       ssubw2 v2.8h, v2.8h, v0.16b529; CODE-NEXT:  ssubw v0.8h, v1.8h, v0.8b530define <16 x i16> @ssubw2_8h(<16 x i8> %a, <16 x i16> %b) {531  %tmp0 = sext <16 x i8> %a to <16 x i16>532  %tmp1 = sub <16 x i16> %b, %tmp0533  ret <16 x i16> %tmp1534}535 536; COST-LABEL: ssubw2_4s537; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <8 x i16> %a to <8 x i32>538; CODE-LABEL: ssubw2_4s539; CODE:       ssubw2 v2.4s, v2.4s, v0.8h540; CODE-NEXT:  ssubw v0.4s, v1.4s, v0.4h541define <8 x i32> @ssubw2_4s(<8 x i16> %a, <8 x i32> %b) {542  %tmp0 = sext <8 x i16> %a to <8 x i32>543  %tmp1 = sub <8 x i32> %b, %tmp0544  ret <8 x i32> %tmp1545}546 547; COST-LABEL: ssubw2_2d548; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp0 = sext <4 x i32> %a to <4 x i64>549; CODE-LABEL: ssubw2_2d550; CODE:       ssubw2 v2.2d, v2.2d, v0.4s551; CODE-NEXT:  ssubw v0.2d, v1.2d, v0.2s552define <4 x i64> @ssubw2_2d(<4 x i32> %a, <4 x i64> %b) {553  %tmp0 = sext <4 x i32> %a to <4 x i64>554  %tmp1 = sub <4 x i64> %b, %tmp0555  ret <4 x i64> %tmp1556}557 558; COST-LABEL: neg_wrong_operand_order559; COST-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %tmp0 = zext <8 x i8> %a to <8 x i16>560define <8 x i16> @neg_wrong_operand_order(<8 x i8> %a, <8 x i16> %b) {561  %tmp0 = zext <8 x i8> %a to <8 x i16>562  %tmp1 = sub <8 x i16> %tmp0, %b563  ret <8 x i16> %tmp1564}565 566; COST-LABEL: neg_non_widening_op567; COST-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %tmp0 = zext <8 x i8> %a to <8 x i16>568define <8 x i16> @neg_non_widening_op(<8 x i8> %a, <8 x i16> %b) {569  %tmp0 = zext <8 x i8> %a to <8 x i16>570  %tmp1 = udiv <8 x i16> %b, %tmp0571  ret <8 x i16> %tmp1572}573 574; COST-LABEL: neg_dissimilar_operand_kind_0575; COST-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %tmp0 = sext <8 x i8> %a to <8 x i16>576; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <8 x i8> %b to <8 x i16>577define <8 x i16> @neg_dissimilar_operand_kind_0(<8 x i8> %a, <8 x i8> %b) {578  %tmp0 = sext <8 x i8> %a to <8 x i16>579  %tmp1 = zext <8 x i8> %b to <8 x i16>580  %tmp2 = add <8 x i16> %tmp0, %tmp1581  ret <8 x i16> %tmp2582}583 584; COST-LABEL: neg_dissimilar_operand_kind_1585; COST-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %tmp0 = zext <4 x i8> %a to <4 x i32>586; COST-NEXT:  Cost Model: Found an estimated cost of 0 for instruction: %tmp1 = zext <4 x i16> %b to <4 x i32>587define <4 x i32> @neg_dissimilar_operand_kind_1(<4 x i8> %a, <4 x i16> %b) {588  %tmp0 = zext <4 x i8> %a to <4 x i32>589  %tmp1 = zext <4 x i16> %b to <4 x i32>590  %tmp2 = add <4 x i32> %tmp0, %tmp1591  ret <4 x i32> %tmp2592}593 594; COST-LABEL: neg_illegal_vector_type_0595; COST-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %tmp0 = zext <16 x i4> %a to <16 x i8>596define <16 x i8> @neg_illegal_vector_type_0(<16 x i4> %a, <16 x i8> %b) {597  %tmp0 = zext <16 x i4> %a to <16 x i8>598  %tmp1 = sub <16 x i8> %b, %tmp0599  ret <16 x i8> %tmp1600}601 602; COST-LABEL: neg_llegal_vector_type_1603; COST-NEXT:  Cost Model: Found an estimated cost of 1 for instruction: %tmp0 = zext <1 x i16> %a to <1 x i32>604define <1 x i32> @neg_llegal_vector_type_1(<1 x i16> %a, <1 x i32> %b) {605  %tmp0 = zext <1 x i16> %a to <1 x i32>606  %tmp1 = add <1 x i32> %b, %tmp0607  ret <1 x i32> %tmp1608}609 610; COST-LABEL: neg_llegal_vector_type_2611; COST-NEXT:  Cost Model: Found an estimated cost of 3 for instruction: %tmp0 = zext <4 x i16> %a to <4 x i64>612define <4 x i64> @neg_llegal_vector_type_2(<4 x i16> %a, <4 x i64> %b) {613  %tmp0 = zext <4 x i16> %a to <4 x i64>614  %tmp1 = add <4 x i64> %b, %tmp0615  ret <4 x i64> %tmp1616}617 618; COST-LABEL: neg_llegal_vector_type_3619; COST-NEXT:  Cost Model: Found an estimated cost of 15 for instruction: %tmp0 = zext <3 x i34> %a to <3 x i68>620define <3 x i68> @neg_llegal_vector_type_3(<3 x i34> %a, <3 x i68> %b) {621  %tmp0 = zext <3 x i34> %a to <3 x i68>622  %tmp1 = add <3 x i68> %b, %tmp0623  ret <3 x i68> %tmp1624}625