1; RUN: llc -march=hexagon < %s | FileCheck %s 2 3; CHECK-LABEL: test1: 4; CHECK: v{{[0-9]+}} = vand(v{{[0-9]+}},v{{[0-9]+}}) 5define <16 x i32> @test1(<16 x i32> %a, <16 x i32> %b) #0 { 6entry: 7 %0 = tail call <16 x i32> @llvm.hexagon.V6.vand(<16 x i32> %a, <16 x i32> %b) 8 ret <16 x i32> %0 9} 10 11; CHECK-LABEL: test2: 12; CHECK: v{{[0-9]+}} = vor(v{{[0-9]+}},v{{[0-9]+}}) 13define <16 x i32> @test2(<16 x i32> %a, <16 x i32> %b) #0 { 14entry: 15 %0 = tail call <16 x i32> @llvm.hexagon.V6.vor(<16 x i32> %a, <16 x i32> %b) 16 ret <16 x i32> %0 17} 18 19; CHECK-LABEL: test3: 20; CHECK: v{{[0-9]+}} = vxor(v{{[0-9]+}},v{{[0-9]+}}) 21define <16 x i32> @test3(<16 x i32> %a, <16 x i32> %b) #0 { 22entry: 23 %0 = tail call <16 x i32> @llvm.hexagon.V6.vxor(<16 x i32> %a, <16 x i32> %b) 24 ret <16 x i32> %0 25} 26 27; CHECK-LABEL: test4: 28; CHECK: v{{[0-9]+}}.w = vadd(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 29define <16 x i32> @test4(<16 x i32> %a, <16 x i32> %b) #0 { 30entry: 31 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddw(<16 x i32> %a, <16 x i32> %b) 32 ret <16 x i32> %0 33} 34 35; CHECK-LABEL: test5: 36; CHECK: v{{[0-9]+}}.ub = vadd(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub):sat 37define <16 x i32> @test5(<16 x i32> %a, <16 x i32> %b) #0 { 38entry: 39 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddubsat(<16 x i32> %a, <16 x i32> %b) 40 ret <16 x i32> %0 41} 42 43; CHECK-LABEL: test6: 44; CHECK: v{{[0-9]+}}.uh = vadd(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh):sat 45define <16 x i32> @test6(<16 x i32> %a, <16 x i32> %b) #0 { 46entry: 47 %0 = tail call <16 x i32> @llvm.hexagon.V6.vadduhsat(<16 x i32> %a, <16 x i32> %b) 48 ret <16 x i32> %0 49} 50 51; CHECK-LABEL: test7: 52; CHECK: v{{[0-9]+}}.h = vadd(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat 53define <16 x i32> @test7(<16 x i32> %a, <16 x i32> %b) #0 { 54entry: 55 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddhsat(<16 x i32> %a, <16 x i32> %b) 56 ret <16 x i32> %0 57} 58 59; CHECK-LABEL: test8: 60; CHECK: v{{[0-9]+}}.w = vadd(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat 61define <16 x i32> @test8(<16 x i32> %a, <16 x i32> %b) #0 { 62entry: 63 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddwsat(<16 x i32> %a, <16 x i32> %b) 64 ret <16 x i32> %0 65} 66 67; CHECK-LABEL: test9: 68; CHECK: v{{[0-9]+}}.b = vsub(v{{[0-9]+}}.b,v{{[0-9]+}}.b) 69define <16 x i32> @test9(<16 x i32> %a, <16 x i32> %b) #0 { 70entry: 71 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubb(<16 x i32> %a, <16 x i32> %b) 72 ret <16 x i32> %0 73} 74 75; CHECK-LABEL: test10: 76; CHECK: v{{[0-9]+}}.h = vsub(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 77define <16 x i32> @test10(<16 x i32> %a, <16 x i32> %b) #0 { 78entry: 79 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubh(<16 x i32> %a, <16 x i32> %b) 80 ret <16 x i32> %0 81} 82 83; CHECK-LABEL: test11: 84; CHECK: v{{[0-9]+}}.w = vsub(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 85define <16 x i32> @test11(<16 x i32> %a, <16 x i32> %b) #0 { 86entry: 87 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubw(<16 x i32> %a, <16 x i32> %b) 88 ret <16 x i32> %0 89} 90 91; CHECK-LABEL: test12: 92; CHECK: v{{[0-9]+}}.ub = vsub(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub):sat 93define <16 x i32> @test12(<16 x i32> %a, <16 x i32> %b) #0 { 94entry: 95 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsububsat(<16 x i32> %a, <16 x i32> %b) 96 ret <16 x i32> %0 97} 98 99; CHECK-LABEL: test13: 100; CHECK: v{{[0-9]+}}.uh = vsub(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh):sat 101define <16 x i32> @test13(<16 x i32> %a, <16 x i32> %b) #0 { 102entry: 103 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubuhsat(<16 x i32> %a, <16 x i32> %b) 104 ret <16 x i32> %0 105} 106 107; CHECK-LABEL: test14: 108; CHECK: v{{[0-9]+}}.h = vsub(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat 109define <16 x i32> @test14(<16 x i32> %a, <16 x i32> %b) #0 { 110entry: 111 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubhsat(<16 x i32> %a, <16 x i32> %b) 112 ret <16 x i32> %0 113} 114 115; CHECK-LABEL: test15: 116; CHECK: v{{[0-9]+}}.w = vsub(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat 117define <16 x i32> @test15(<16 x i32> %a, <16 x i32> %b) #0 { 118entry: 119 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsubwsat(<16 x i32> %a, <16 x i32> %b) 120 ret <16 x i32> %0 121} 122 123; CHECK-LABEL: test16: 124; CHECK: v{{[0-9]+}}:{{[0-9]+}}.b = vadd(v{{[0-9]+}}:{{[0-9]+}}.b,v{{[0-9]+}}:{{[0-9]+}}.b) 125define <32 x i32> @test16(<32 x i32> %a, <32 x i32> %b) #0 { 126entry: 127 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddb.dv(<32 x i32> %a, <32 x i32> %b) 128 ret <32 x i32> %0 129} 130 131; CHECK-LABEL: test17: 132; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vadd(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h) 133define <32 x i32> @test17(<32 x i32> %a, <32 x i32> %b) #0 { 134entry: 135 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32> %a, <32 x i32> %b) 136 ret <32 x i32> %0 137} 138 139; CHECK-LABEL: test18: 140; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w) 141define <32 x i32> @test18(<32 x i32> %a, <32 x i32> %b) #0 { 142entry: 143 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddw.dv(<32 x i32> %a, <32 x i32> %b) 144 ret <32 x i32> %0 145} 146 147; CHECK-LABEL: test19: 148; CHECK: v{{[0-9]+}}:{{[0-9]+}}.ub = vadd(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.ub):sat 149define <32 x i32> @test19(<32 x i32> %a, <32 x i32> %b) #0 { 150entry: 151 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddubsat.dv(<32 x i32> %a, <32 x i32> %b) 152 ret <32 x i32> %0 153} 154 155; CHECK-LABEL: test20: 156; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vadd(v{{[0-9]+}}:{{[0-9]+}}.uh,v{{[0-9]+}}:{{[0-9]+}}.uh):sat 157define <32 x i32> @test20(<32 x i32> %a, <32 x i32> %b) #0 { 158entry: 159 %0 = tail call <32 x i32> @llvm.hexagon.V6.vadduhsat.dv(<32 x i32> %a, <32 x i32> %b) 160 ret <32 x i32> %0 161} 162 163; CHECK-LABEL: test21: 164; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vadd(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h):sat 165define <32 x i32> @test21(<32 x i32> %a, <32 x i32> %b) #0 { 166entry: 167 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddhsat.dv(<32 x i32> %a, <32 x i32> %b) 168 ret <32 x i32> %0 169} 170 171; CHECK-LABEL: test22: 172; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w):sat 173define <32 x i32> @test22(<32 x i32> %a, <32 x i32> %b) #0 { 174entry: 175 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddwsat.dv(<32 x i32> %a, <32 x i32> %b) 176 ret <32 x i32> %0 177} 178 179; CHECK-LABEL: test23: 180; CHECK: v{{[0-9]+}}:{{[0-9]+}}.b = vsub(v{{[0-9]+}}:{{[0-9]+}}.b,v{{[0-9]+}}:{{[0-9]+}}.b) 181define <32 x i32> @test23(<32 x i32> %a, <32 x i32> %b) #0 { 182entry: 183 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubb.dv(<32 x i32> %a, <32 x i32> %b) 184 ret <32 x i32> %0 185} 186 187; CHECK-LABEL: test24: 188; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsub(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h) 189define <32 x i32> @test24(<32 x i32> %a, <32 x i32> %b) #0 { 190entry: 191 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubh.dv(<32 x i32> %a, <32 x i32> %b) 192 ret <32 x i32> %0 193} 194 195; CHECK-LABEL: test25: 196; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w) 197define <32 x i32> @test25(<32 x i32> %a, <32 x i32> %b) #0 { 198entry: 199 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubw.dv(<32 x i32> %a, <32 x i32> %b) 200 ret <32 x i32> %0 201} 202 203; CHECK-LABEL: test26: 204; CHECK: v{{[0-9]+}}:{{[0-9]+}}.ub = vsub(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.ub):sat 205define <32 x i32> @test26(<32 x i32> %a, <32 x i32> %b) #0 { 206entry: 207 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsububsat.dv(<32 x i32> %a, <32 x i32> %b) 208 ret <32 x i32> %0 209} 210 211; CHECK-LABEL: test27: 212; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vsub(v{{[0-9]+}}:{{[0-9]+}}.uh,v{{[0-9]+}}:{{[0-9]+}}.uh):sat 213define <32 x i32> @test27(<32 x i32> %a, <32 x i32> %b) #0 { 214entry: 215 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubuhsat.dv(<32 x i32> %a, <32 x i32> %b) 216 ret <32 x i32> %0 217} 218 219; CHECK-LABEL: test28: 220; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsub(v{{[0-9]+}}:{{[0-9]+}}.h,v{{[0-9]+}}:{{[0-9]+}}.h):sat 221define <32 x i32> @test28(<32 x i32> %a, <32 x i32> %b) #0 { 222entry: 223 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubhsat.dv(<32 x i32> %a, <32 x i32> %b) 224 ret <32 x i32> %0 225} 226 227; CHECK-LABEL: test29: 228; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}:{{[0-9]+}}.w,v{{[0-9]+}}:{{[0-9]+}}.w):sat 229define <32 x i32> @test29(<32 x i32> %a, <32 x i32> %b) #0 { 230entry: 231 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubwsat.dv(<32 x i32> %a, <32 x i32> %b) 232 ret <32 x i32> %0 233} 234 235; CHECK-LABEL: test30: 236; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vadd(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 237define <32 x i32> @test30(<16 x i32> %a, <16 x i32> %b) #0 { 238entry: 239 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddubh(<16 x i32> %a, <16 x i32> %b) 240 ret <32 x i32> %0 241} 242 243; CHECK-LABEL: test31: 244; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh) 245define <32 x i32> @test31(<16 x i32> %a, <16 x i32> %b) #0 { 246entry: 247 %0 = tail call <32 x i32> @llvm.hexagon.V6.vadduhw(<16 x i32> %a, <16 x i32> %b) 248 ret <32 x i32> %0 249} 250 251; CHECK-LABEL: test32: 252; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vadd(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 253define <32 x i32> @test32(<16 x i32> %a, <16 x i32> %b) #0 { 254entry: 255 %0 = tail call <32 x i32> @llvm.hexagon.V6.vaddhw(<16 x i32> %a, <16 x i32> %b) 256 ret <32 x i32> %0 257} 258 259; CHECK-LABEL: test33: 260; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsub(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 261define <32 x i32> @test33(<16 x i32> %a, <16 x i32> %b) #0 { 262entry: 263 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsububh(<16 x i32> %a, <16 x i32> %b) 264 ret <32 x i32> %0 265} 266 267; CHECK-LABEL: test34: 268; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh) 269define <32 x i32> @test34(<16 x i32> %a, <16 x i32> %b) #0 { 270entry: 271 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubuhw(<16 x i32> %a, <16 x i32> %b) 272 ret <32 x i32> %0 273} 274 275; CHECK-LABEL: test35: 276; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsub(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 277define <32 x i32> @test35(<16 x i32> %a, <16 x i32> %b) #0 { 278entry: 279 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsubhw(<16 x i32> %a, <16 x i32> %b) 280 ret <32 x i32> %0 281} 282 283; CHECK-LABEL: test36: 284; CHECK: v{{[0-9]+}}.ub = vabsdiff(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 285define <16 x i32> @test36(<16 x i32> %a, <16 x i32> %b) #0 { 286entry: 287 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffub(<16 x i32> %a, <16 x i32> %b) 288 ret <16 x i32> %0 289} 290 291; CHECK-LABEL: test37: 292; CHECK: v{{[0-9]+}}.uh = vabsdiff(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 293define <16 x i32> @test37(<16 x i32> %a, <16 x i32> %b) #0 { 294entry: 295 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32> %a, <16 x i32> %b) 296 ret <16 x i32> %0 297} 298 299; CHECK-LABEL: test38: 300; CHECK: v{{[0-9]+}}.uh = vabsdiff(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh) 301define <16 x i32> @test38(<16 x i32> %a, <16 x i32> %b) #0 { 302entry: 303 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffuh(<16 x i32> %a, <16 x i32> %b) 304 ret <16 x i32> %0 305} 306 307; CHECK-LABEL: test39: 308; CHECK: v{{[0-9]+}}.uw = vabsdiff(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 309define <16 x i32> @test39(<16 x i32> %a, <16 x i32> %b) #0 { 310entry: 311 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsdiffw(<16 x i32> %a, <16 x i32> %b) 312 ret <16 x i32> %0 313} 314 315; CHECK-LABEL: test40: 316; CHECK: v{{[0-9]+}}.ub = vavg(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 317define <16 x i32> @test40(<16 x i32> %a, <16 x i32> %b) #0 { 318entry: 319 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgub(<16 x i32> %a, <16 x i32> %b) 320 ret <16 x i32> %0 321} 322 323; CHECK-LABEL: test41: 324; CHECK: v{{[0-9]+}}.uh = vavg(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh) 325define <16 x i32> @test41(<16 x i32> %a, <16 x i32> %b) #0 { 326entry: 327 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavguh(<16 x i32> %a, <16 x i32> %b) 328 ret <16 x i32> %0 329} 330 331; CHECK-LABEL: test42: 332; CHECK: v{{[0-9]+}}.h = vavg(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 333define <16 x i32> @test42(<16 x i32> %a, <16 x i32> %b) #0 { 334entry: 335 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgh(<16 x i32> %a, <16 x i32> %b) 336 ret <16 x i32> %0 337} 338 339; CHECK-LABEL: test43: 340; CHECK: v{{[0-9]+}}.w = vavg(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 341define <16 x i32> @test43(<16 x i32> %a, <16 x i32> %b) #0 { 342entry: 343 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgw(<16 x i32> %a, <16 x i32> %b) 344 ret <16 x i32> %0 345} 346 347; CHECK-LABEL: test44: 348; CHECK: v{{[0-9]+}}.b = vnavg(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 349define <16 x i32> @test44(<16 x i32> %a, <16 x i32> %b) #0 { 350entry: 351 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgub(<16 x i32> %a, <16 x i32> %b) 352 ret <16 x i32> %0 353} 354 355; CHECK-LABEL: test45: 356; CHECK: v{{[0-9]+}}.h = vnavg(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 357define <16 x i32> @test45(<16 x i32> %a, <16 x i32> %b) #0 { 358entry: 359 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgh(<16 x i32> %a, <16 x i32> %b) 360 ret <16 x i32> %0 361} 362 363; CHECK-LABEL: test46: 364; CHECK: v{{[0-9]+}}.w = vnavg(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 365define <16 x i32> @test46(<16 x i32> %a, <16 x i32> %b) #0 { 366entry: 367 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnavgw(<16 x i32> %a, <16 x i32> %b) 368 ret <16 x i32> %0 369} 370 371; CHECK-LABEL: test47: 372; CHECK: v{{[0-9]+}}.ub = vavg(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub):rnd 373define <16 x i32> @test47(<16 x i32> %a, <16 x i32> %b) #0 { 374entry: 375 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgubrnd(<16 x i32> %a, <16 x i32> %b) 376 ret <16 x i32> %0 377} 378 379; CHECK-LABEL: test48: 380; CHECK: v{{[0-9]+}}.uh = vavg(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh):rnd 381define <16 x i32> @test48(<16 x i32> %a, <16 x i32> %b) #0 { 382entry: 383 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavguhrnd(<16 x i32> %a, <16 x i32> %b) 384 ret <16 x i32> %0 385} 386 387; CHECK-LABEL: test49: 388; CHECK: v{{[0-9]+}}.h = vavg(v{{[0-9]+}}.h,v{{[0-9]+}}.h):rnd 389define <16 x i32> @test49(<16 x i32> %a, <16 x i32> %b) #0 { 390entry: 391 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavghrnd(<16 x i32> %a, <16 x i32> %b) 392 ret <16 x i32> %0 393} 394 395; CHECK-LABEL: test50: 396; CHECK: v{{[0-9]+}}.w = vavg(v{{[0-9]+}}.w,v{{[0-9]+}}.w):rnd 397define <16 x i32> @test50(<16 x i32> %a, <16 x i32> %b) #0 { 398entry: 399 %0 = tail call <16 x i32> @llvm.hexagon.V6.vavgwrnd(<16 x i32> %a, <16 x i32> %b) 400 ret <16 x i32> %0 401} 402 403; CHECK-LABEL: test51: 404; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vmpa(v{{[0-9]+}}:{{[0-9]+}}.ub,v{{[0-9]+}}:{{[0-9]+}}.ub) 405define <32 x i32> @test51(<32 x i32> %a, <32 x i32> %b) #0 { 406entry: 407 %0 = tail call <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32> %a, <32 x i32> %b) 408 ret <32 x i32> %0 409} 410 411; CHECK-LABEL: test52: 412; CHECK: v{{[0-9]+}}.ub = vmin(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 413define <16 x i32> @test52(<16 x i32> %a, <16 x i32> %b) #0 { 414entry: 415 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminub(<16 x i32> %a, <16 x i32> %b) 416 ret <16 x i32> %0 417} 418 419; CHECK-LABEL: test53: 420; CHECK: v{{[0-9]+}}.uh = vmin(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh) 421define <16 x i32> @test53(<16 x i32> %a, <16 x i32> %b) #0 { 422entry: 423 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminuh(<16 x i32> %a, <16 x i32> %b) 424 ret <16 x i32> %0 425} 426 427; CHECK-LABEL: test54: 428; CHECK: v{{[0-9]+}}.h = vmin(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 429define <16 x i32> @test54(<16 x i32> %a, <16 x i32> %b) #0 { 430entry: 431 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminh(<16 x i32> %a, <16 x i32> %b) 432 ret <16 x i32> %0 433} 434 435; CHECK-LABEL: test55: 436; CHECK: v{{[0-9]+}}.w = vmin(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 437define <16 x i32> @test55(<16 x i32> %a, <16 x i32> %b) #0 { 438entry: 439 %0 = tail call <16 x i32> @llvm.hexagon.V6.vminw(<16 x i32> %a, <16 x i32> %b) 440 ret <16 x i32> %0 441} 442 443; CHECK-LABEL: test56: 444; CHECK: v{{[0-9]+}}.ub = vmax(v{{[0-9]+}}.ub,v{{[0-9]+}}.ub) 445define <16 x i32> @test56(<16 x i32> %a, <16 x i32> %b) #0 { 446entry: 447 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxub(<16 x i32> %a, <16 x i32> %b) 448 ret <16 x i32> %0 449} 450 451; CHECK-LABEL: test57: 452; CHECK: v{{[0-9]+}}.uh = vmax(v{{[0-9]+}}.uh,v{{[0-9]+}}.uh) 453define <16 x i32> @test57(<16 x i32> %a, <16 x i32> %b) #0 { 454entry: 455 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxuh(<16 x i32> %a, <16 x i32> %b) 456 ret <16 x i32> %0 457} 458 459; CHECK-LABEL: test58: 460; CHECK: v{{[0-9]+}}.h = vmax(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 461define <16 x i32> @test58(<16 x i32> %a, <16 x i32> %b) #0 { 462entry: 463 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxh(<16 x i32> %a, <16 x i32> %b) 464 ret <16 x i32> %0 465} 466 467; CHECK-LABEL: test59: 468; CHECK: v{{[0-9]+}}.w = vmax(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 469define <16 x i32> @test59(<16 x i32> %a, <16 x i32> %b) #0 { 470entry: 471 %0 = tail call <16 x i32> @llvm.hexagon.V6.vmaxw(<16 x i32> %a, <16 x i32> %b) 472 ret <16 x i32> %0 473} 474 475; CHECK-LABEL: test60: 476; CHECK: v{{[0-9]+}} = vdelta(v{{[0-9]+}},v{{[0-9]+}}) 477define <16 x i32> @test60(<16 x i32> %a, <16 x i32> %b) #0 { 478entry: 479 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdelta(<16 x i32> %a, <16 x i32> %b) 480 ret <16 x i32> %0 481} 482 483; CHECK-LABEL: test61: 484; CHECK: v{{[0-9]+}} = vrdelta(v{{[0-9]+}},v{{[0-9]+}}) 485define <16 x i32> @test61(<16 x i32> %a, <16 x i32> %b) #0 { 486entry: 487 %0 = tail call <16 x i32> @llvm.hexagon.V6.vrdelta(<16 x i32> %a, <16 x i32> %b) 488 ret <16 x i32> %0 489} 490 491; CHECK-LABEL: test62: 492; CHECK: v{{[0-9]+}}.b = vdeale(v{{[0-9]+}}.b,v{{[0-9]+}}.b) 493define <16 x i32> @test62(<16 x i32> %a, <16 x i32> %b) #0 { 494entry: 495 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealb4w(<16 x i32> %a, <16 x i32> %b) 496 ret <16 x i32> %0 497} 498 499; CHECK-LABEL: test63: 500; CHECK: v{{[0-9]+}}.b = vshuffe(v{{[0-9]+}}.b,v{{[0-9]+}}.b) 501define <16 x i32> @test63(<16 x i32> %a, <16 x i32> %b) #0 { 502entry: 503 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffeb(<16 x i32> %a, <16 x i32> %b) 504 ret <16 x i32> %0 505} 506 507; CHECK-LABEL: test64: 508; CHECK: v{{[0-9]+}}.b = vshuffo(v{{[0-9]+}}.b,v{{[0-9]+}}.b) 509define <16 x i32> @test64(<16 x i32> %a, <16 x i32> %b) #0 { 510entry: 511 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffob(<16 x i32> %a, <16 x i32> %b) 512 ret <16 x i32> %0 513} 514 515; CHECK-LABEL: test65: 516; CHECK: v{{[0-9]+}}.h = vshuffe(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 517define <16 x i32> @test65(<16 x i32> %a, <16 x i32> %b) #0 { 518entry: 519 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshufeh(<16 x i32> %a, <16 x i32> %b) 520 ret <16 x i32> %0 521} 522 523; CHECK-LABEL: test66: 524; CHECK: v{{[0-9]+}}.h = vshuffo(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 525define <16 x i32> @test66(<16 x i32> %a, <16 x i32> %b) #0 { 526entry: 527 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshufoh(<16 x i32> %a, <16 x i32> %b) 528 ret <16 x i32> %0 529} 530 531; CHECK-LABEL: test67: 532; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vshuffoe(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 533define <32 x i32> @test67(<16 x i32> %a, <16 x i32> %b) #0 { 534entry: 535 %0 = tail call <32 x i32> @llvm.hexagon.V6.vshufoeh(<16 x i32> %a, <16 x i32> %b) 536 ret <32 x i32> %0 537} 538 539; CHECK-LABEL: test68: 540; CHECK: v{{[0-9]+}}:{{[0-9]+}}.b = vshuffoe(v{{[0-9]+}}.b,v{{[0-9]+}}.b) 541define <32 x i32> @test68(<16 x i32> %a, <16 x i32> %b) #0 { 542entry: 543 %0 = tail call <32 x i32> @llvm.hexagon.V6.vshufoeb(<16 x i32> %a, <16 x i32> %b) 544 ret <32 x i32> %0 545} 546 547; CHECK-LABEL: test69: 548; CHECK: v{{[0-9]+}}:{{[0-9]+}} = vcombine(v{{[0-9]+}},v{{[0-9]+}}) 549define <32 x i32> @test69(<16 x i32> %a, <16 x i32> %b) #0 { 550entry: 551 %0 = tail call <32 x i32> @llvm.hexagon.V6.vcombine(<16 x i32> %a, <16 x i32> %b) 552 ret <32 x i32> %0 553} 554 555; CHECK-LABEL: test70: 556; CHECK: v{{[0-9]+}}.ub = vsat(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 557define <16 x i32> @test70(<16 x i32> %a, <16 x i32> %b) #0 { 558entry: 559 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32> %a, <16 x i32> %b) 560 ret <16 x i32> %0 561} 562 563; CHECK-LABEL: test71: 564; CHECK: v{{[0-9]+}}.h = vsat(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 565define <16 x i32> @test71(<16 x i32> %a, <16 x i32> %b) #0 { 566entry: 567 %0 = tail call <16 x i32> @llvm.hexagon.V6.vsatwh(<16 x i32> %a, <16 x i32> %b) 568 ret <16 x i32> %0 569} 570 571; CHECK-LABEL: test72: 572; CHECK: v{{[0-9]+}}.h = vround(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat 573define <16 x i32> @test72(<16 x i32> %a, <16 x i32> %b) #0 { 574entry: 575 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundwh(<16 x i32> %a, <16 x i32> %b) 576 ret <16 x i32> %0 577} 578 579; CHECK-LABEL: test73: 580; CHECK: v{{[0-9]+}}.uh = vround(v{{[0-9]+}}.w,v{{[0-9]+}}.w):sat 581define <16 x i32> @test73(<16 x i32> %a, <16 x i32> %b) #0 { 582entry: 583 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundwuh(<16 x i32> %a, <16 x i32> %b) 584 ret <16 x i32> %0 585} 586 587; CHECK-LABEL: test74: 588; CHECK: v{{[0-9]+}}.b = vround(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat 589define <16 x i32> @test74(<16 x i32> %a, <16 x i32> %b) #0 { 590entry: 591 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundhb(<16 x i32> %a, <16 x i32> %b) 592 ret <16 x i32> %0 593} 594 595; CHECK-LABEL: test75: 596; CHECK: v{{[0-9]+}}.ub = vround(v{{[0-9]+}}.h,v{{[0-9]+}}.h):sat 597define <16 x i32> @test75(<16 x i32> %a, <16 x i32> %b) #0 { 598entry: 599 %0 = tail call <16 x i32> @llvm.hexagon.V6.vroundhub(<16 x i32> %a, <16 x i32> %b) 600 ret <16 x i32> %0 601} 602 603; CHECK-LABEL: test76: 604; CHECK: v{{[0-9]+}}.w = vasr(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 605define <16 x i32> @test76(<16 x i32> %a, <16 x i32> %b) #0 { 606entry: 607 %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrwv(<16 x i32> %a, <16 x i32> %b) 608 ret <16 x i32> %0 609} 610 611; CHECK-LABEL: test77: 612; CHECK: v{{[0-9]+}}.w = vlsr(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 613define <16 x i32> @test77(<16 x i32> %a, <16 x i32> %b) #0 { 614entry: 615 %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrwv(<16 x i32> %a, <16 x i32> %b) 616 ret <16 x i32> %0 617} 618 619; CHECK-LABEL: test78: 620; CHECK: v{{[0-9]+}}.h = vlsr(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 621define <16 x i32> @test78(<16 x i32> %a, <16 x i32> %b) #0 { 622entry: 623 %0 = tail call <16 x i32> @llvm.hexagon.V6.vlsrhv(<16 x i32> %a, <16 x i32> %b) 624 ret <16 x i32> %0 625} 626 627; CHECK-LABEL: test79: 628; CHECK: v{{[0-9]+}}.h = vasr(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 629define <16 x i32> @test79(<16 x i32> %a, <16 x i32> %b) #0 { 630entry: 631 %0 = tail call <16 x i32> @llvm.hexagon.V6.vasrhv(<16 x i32> %a, <16 x i32> %b) 632 ret <16 x i32> %0 633} 634 635; CHECK-LABEL: test80: 636; CHECK: v{{[0-9]+}}.w = vasl(v{{[0-9]+}}.w,v{{[0-9]+}}.w) 637define <16 x i32> @test80(<16 x i32> %a, <16 x i32> %b) #0 { 638entry: 639 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslwv(<16 x i32> %a, <16 x i32> %b) 640 ret <16 x i32> %0 641} 642 643; CHECK-LABEL: test81: 644; CHECK: v{{[0-9]+}}.h = vasl(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 645define <16 x i32> @test81(<16 x i32> %a, <16 x i32> %b) #0 { 646entry: 647 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaslhv(<16 x i32> %a, <16 x i32> %b) 648 ret <16 x i32> %0 649} 650 651; CHECK-LABEL: test82: 652; CHECK: v{{[0-9]+}}.b = vadd(v{{[0-9]+}}.b,v{{[0-9]+}}.b) 653define <16 x i32> @test82(<16 x i32> %a, <16 x i32> %b) #0 { 654entry: 655 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddb(<16 x i32> %a, <16 x i32> %b) 656 ret <16 x i32> %0 657} 658 659; CHECK-LABEL: test83: 660; CHECK: v{{[0-9]+}}.h = vadd(v{{[0-9]+}}.h,v{{[0-9]+}}.h) 661define <16 x i32> @test83(<16 x i32> %a, <16 x i32> %b) #0 { 662entry: 663 %0 = tail call <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32> %a, <16 x i32> %b) 664 ret <16 x i32> %0 665} 666 667; CHECK-LABEL: test84: 668; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.b += v{{[0-9]+}}.b 669define <16 x i32> @test84(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 670entry: 671 %0 = bitcast <16 x i32> %a to <512 x i1> 672 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddbq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 673 ret <16 x i32> %1 674} 675 676; CHECK-LABEL: test85: 677; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.h += v{{[0-9]+}}.h 678define <16 x i32> @test85(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 679entry: 680 %0 = bitcast <16 x i32> %a to <512 x i1> 681 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddhq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 682 ret <16 x i32> %1 683} 684 685; CHECK-LABEL: test86: 686; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.w += v{{[0-9]+}}.w 687define <16 x i32> @test86(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 688entry: 689 %0 = bitcast <16 x i32> %a to <512 x i1> 690 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddwq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 691 ret <16 x i32> %1 692} 693 694; CHECK-LABEL: test87: 695; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.b += v{{[0-9]+}}.b 696define <16 x i32> @test87(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 697entry: 698 %0 = bitcast <16 x i32> %a to <512 x i1> 699 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddbnq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 700 ret <16 x i32> %1 701} 702 703; CHECK-LABEL: test88: 704; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.h += v{{[0-9]+}}.h 705define <16 x i32> @test88(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 706entry: 707 %0 = bitcast <16 x i32> %a to <512 x i1> 708 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddhnq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 709 ret <16 x i32> %1 710} 711 712; CHECK-LABEL: test89: 713; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.w += v{{[0-9]+}}.w 714define <16 x i32> @test89(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 715entry: 716 %0 = bitcast <16 x i32> %a to <512 x i1> 717 %1 = tail call <16 x i32> @llvm.hexagon.V6.vaddwnq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 718 ret <16 x i32> %1 719} 720 721; CHECK-LABEL: test90: 722; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.b -= v{{[0-9]+}}.b 723define <16 x i32> @test90(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 724entry: 725 %0 = bitcast <16 x i32> %a to <512 x i1> 726 %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubbq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 727 ret <16 x i32> %1 728} 729 730; CHECK-LABEL: test91: 731; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.h -= v{{[0-9]+}}.h 732define <16 x i32> @test91(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 733entry: 734 %0 = bitcast <16 x i32> %a to <512 x i1> 735 %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubhq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 736 ret <16 x i32> %1 737} 738 739; CHECK-LABEL: test92: 740; CHECK: if (q{{[0-3]}}) v{{[0-9]+}}.w -= v{{[0-9]+}}.w 741define <16 x i32> @test92(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 742entry: 743 %0 = bitcast <16 x i32> %a to <512 x i1> 744 %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubwq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 745 ret <16 x i32> %1 746} 747 748; CHECK-LABEL: test93: 749; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.b -= v{{[0-9]+}}.b 750define <16 x i32> @test93(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 751entry: 752 %0 = bitcast <16 x i32> %a to <512 x i1> 753 %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubbnq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 754 ret <16 x i32> %1 755} 756 757; CHECK-LABEL: test94: 758; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.h -= v{{[0-9]+}}.h 759define <16 x i32> @test94(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 760entry: 761 %0 = bitcast <16 x i32> %a to <512 x i1> 762 %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubhnq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 763 ret <16 x i32> %1 764} 765 766; CHECK-LABEL: test95: 767; CHECK: if (!q{{[0-3]}}) v{{[0-9]+}}.w -= v{{[0-9]+}}.w 768define <16 x i32> @test95(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { 769entry: 770 %0 = bitcast <16 x i32> %a to <512 x i1> 771 %1 = tail call <16 x i32> @llvm.hexagon.V6.vsubwnq(<512 x i1> %0, <16 x i32> %c, <16 x i32> %b) 772 ret <16 x i32> %1 773} 774 775; CHECK-LABEL: test96: 776; CHECK: v{{[0-9]+}}.h = vabs(v{{[0-9]+}}.h) 777define <16 x i32> @test96(<16 x i32> %a) #0 { 778entry: 779 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32> %a) 780 ret <16 x i32> %0 781} 782 783; CHECK-LABEL: test97: 784; CHECK: v{{[0-9]+}}.h = vabs(v{{[0-9]+}}.h):sat 785define <16 x i32> @test97(<16 x i32> %a) #0 { 786entry: 787 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsh.sat(<16 x i32> %a) 788 ret <16 x i32> %0 789} 790 791; CHECK-LABEL: test98: 792; CHECK: v{{[0-9]+}}.w = vabs(v{{[0-9]+}}.w) 793define <16 x i32> @test98(<16 x i32> %a) #0 { 794entry: 795 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsw(<16 x i32> %a) 796 ret <16 x i32> %0 797} 798 799; CHECK-LABEL: test99: 800; CHECK: v{{[0-9]+}}.w = vabs(v{{[0-9]+}}.w):sat 801define <16 x i32> @test99(<16 x i32> %a) #0 { 802entry: 803 %0 = tail call <16 x i32> @llvm.hexagon.V6.vabsw.sat(<16 x i32> %a) 804 ret <16 x i32> %0 805} 806 807; CHECK-LABEL: test100: 808; CHECK: v{{[0-9]+}} = vnot(v{{[0-9]+}}) 809define <16 x i32> @test100(<16 x i32> %a) #0 { 810entry: 811 %0 = tail call <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32> %a) 812 ret <16 x i32> %0 813} 814 815; CHECK-LABEL: test101: 816; CHECK: v{{[0-9]+}}.h = vdeal(v{{[0-9]+}}.h) 817define <16 x i32> @test101(<16 x i32> %a) #0 { 818entry: 819 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealh(<16 x i32> %a) 820 ret <16 x i32> %0 821} 822 823; CHECK-LABEL: test102: 824; CHECK: v{{[0-9]+}}.b = vdeal(v{{[0-9]+}}.b) 825define <16 x i32> @test102(<16 x i32> %a) #0 { 826entry: 827 %0 = tail call <16 x i32> @llvm.hexagon.V6.vdealb(<16 x i32> %a) 828 ret <16 x i32> %0 829} 830 831; CHECK-LABEL: test103: 832; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vunpack(v{{[0-9]+}}.ub) 833define <32 x i32> @test103(<16 x i32> %a) #0 { 834entry: 835 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackub(<16 x i32> %a) 836 ret <32 x i32> %0 837} 838 839; CHECK-LABEL: test104: 840; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vunpack(v{{[0-9]+}}.uh) 841define <32 x i32> @test104(<16 x i32> %a) #0 { 842entry: 843 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackuh(<16 x i32> %a) 844 ret <32 x i32> %0 845} 846 847; CHECK-LABEL: test105: 848; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vunpack(v{{[0-9]+}}.b) 849define <32 x i32> @test105(<16 x i32> %a) #0 { 850entry: 851 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackb(<16 x i32> %a) 852 ret <32 x i32> %0 853} 854 855; CHECK-LABEL: test106: 856; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vunpack(v{{[0-9]+}}.h) 857define <32 x i32> @test106(<16 x i32> %a) #0 { 858entry: 859 %0 = tail call <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32> %a) 860 ret <32 x i32> %0 861} 862 863; CHECK-LABEL: test107: 864; CHECK: v{{[0-9]+}}.h = vshuff(v{{[0-9]+}}.h) 865define <16 x i32> @test107(<16 x i32> %a) #0 { 866entry: 867 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32> %a) 868 ret <16 x i32> %0 869} 870 871; CHECK-LABEL: test108: 872; CHECK: v{{[0-9]+}}.b = vshuff(v{{[0-9]+}}.b) 873define <16 x i32> @test108(<16 x i32> %a) #0 { 874entry: 875 %0 = tail call <16 x i32> @llvm.hexagon.V6.vshuffb(<16 x i32> %a) 876 ret <16 x i32> %0 877} 878 879; CHECK-LABEL: test109: 880; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uh = vzxt(v{{[0-9]+}}.ub) 881define <32 x i32> @test109(<16 x i32> %a) #0 { 882entry: 883 %0 = tail call <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32> %a) 884 ret <32 x i32> %0 885} 886 887; CHECK-LABEL: test110: 888; CHECK: v{{[0-9]+}}:{{[0-9]+}}.uw = vzxt(v{{[0-9]+}}.uh) 889define <32 x i32> @test110(<16 x i32> %a) #0 { 890entry: 891 %0 = tail call <32 x i32> @llvm.hexagon.V6.vzh(<16 x i32> %a) 892 ret <32 x i32> %0 893} 894 895; CHECK-LABEL: test111: 896; CHECK: v{{[0-9]+}}:{{[0-9]+}}.h = vsxt(v{{[0-9]+}}.b) 897define <32 x i32> @test111(<16 x i32> %a) #0 { 898entry: 899 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsb(<16 x i32> %a) 900 ret <32 x i32> %0 901} 902 903; CHECK-LABEL: test112: 904; CHECK: v{{[0-9]+}}:{{[0-9]+}}.w = vsxt(v{{[0-9]+}}.h) 905define <32 x i32> @test112(<16 x i32> %a) #0 { 906entry: 907 %0 = tail call <32 x i32> @llvm.hexagon.V6.vsh(<16 x i32> %a) 908 ret <32 x i32> %0 909} 910 911; CHECK-LABEL: test113: 912; CHECK: v{{[0-9]+}} = v{{[0-9]+}} 913define <16 x i32> @test113(<16 x i32> %a) #0 { 914entry: 915 %0 = tail call <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32> %a) 916 ret <16 x i32> %0 917} 918 919declare <16 x i32> @llvm.hexagon.V6.vadduhsat(<16 x i32>, <16 x i32>) #0 920declare <16 x i32> @llvm.hexagon.V6.vaddhsat(<16 x i32>, <16 x i32>) #0 921declare <16 x i32> @llvm.hexagon.V6.vaddwsat(<16 x i32>, <16 x i32>) #0 922declare <16 x i32> @llvm.hexagon.V6.vsubb(<16 x i32>, <16 x i32>) #0 923declare <16 x i32> @llvm.hexagon.V6.vsubh(<16 x i32>, <16 x i32>) #0 924declare <16 x i32> @llvm.hexagon.V6.vsubw(<16 x i32>, <16 x i32>) #0 925declare <16 x i32> @llvm.hexagon.V6.vsububsat(<16 x i32>, <16 x i32>) #0 926declare <16 x i32> @llvm.hexagon.V6.vsubuhsat(<16 x i32>, <16 x i32>) #0 927declare <16 x i32> @llvm.hexagon.V6.vsubhsat(<16 x i32>, <16 x i32>) #0 928declare <16 x i32> @llvm.hexagon.V6.vsubwsat(<16 x i32>, <16 x i32>) #0 929declare <32 x i32> @llvm.hexagon.V6.vaddb.dv(<32 x i32>, <32 x i32>) #0 930declare <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32>, <32 x i32>) #0 931declare <32 x i32> @llvm.hexagon.V6.vaddw.dv(<32 x i32>, <32 x i32>) #0 932declare <32 x i32> @llvm.hexagon.V6.vaddubsat.dv(<32 x i32>, <32 x i32>) #0 933declare <32 x i32> @llvm.hexagon.V6.vadduhsat.dv(<32 x i32>, <32 x i32>) #0 934declare <32 x i32> @llvm.hexagon.V6.vaddhsat.dv(<32 x i32>, <32 x i32>) #0 935declare <32 x i32> @llvm.hexagon.V6.vaddwsat.dv(<32 x i32>, <32 x i32>) #0 936declare <32 x i32> @llvm.hexagon.V6.vsubb.dv(<32 x i32>, <32 x i32>) #0 937declare <32 x i32> @llvm.hexagon.V6.vsubh.dv(<32 x i32>, <32 x i32>) #0 938declare <32 x i32> @llvm.hexagon.V6.vsubw.dv(<32 x i32>, <32 x i32>) #0 939declare <32 x i32> @llvm.hexagon.V6.vsububsat.dv(<32 x i32>, <32 x i32>) #0 940declare <32 x i32> @llvm.hexagon.V6.vsubuhsat.dv(<32 x i32>, <32 x i32>) #0 941declare <32 x i32> @llvm.hexagon.V6.vsubhsat.dv(<32 x i32>, <32 x i32>) #0 942declare <32 x i32> @llvm.hexagon.V6.vsubwsat.dv(<32 x i32>, <32 x i32>) #0 943declare <32 x i32> @llvm.hexagon.V6.vaddubh(<16 x i32>, <16 x i32>) #0 944declare <32 x i32> @llvm.hexagon.V6.vadduhw(<16 x i32>, <16 x i32>) #0 945declare <32 x i32> @llvm.hexagon.V6.vaddhw(<16 x i32>, <16 x i32>) #0 946declare <32 x i32> @llvm.hexagon.V6.vsububh(<16 x i32>, <16 x i32>) #0 947declare <32 x i32> @llvm.hexagon.V6.vsubuhw(<16 x i32>, <16 x i32>) #0 948declare <32 x i32> @llvm.hexagon.V6.vsubhw(<16 x i32>, <16 x i32>) #0 949declare <16 x i32> @llvm.hexagon.V6.vabsdiffub(<16 x i32>, <16 x i32>) #0 950declare <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32>, <16 x i32>) #0 951declare <16 x i32> @llvm.hexagon.V6.vabsdiffuh(<16 x i32>, <16 x i32>) #0 952declare <16 x i32> @llvm.hexagon.V6.vabsdiffw(<16 x i32>, <16 x i32>) #0 953declare <16 x i32> @llvm.hexagon.V6.vavgub(<16 x i32>, <16 x i32>) #0 954declare <16 x i32> @llvm.hexagon.V6.vavguh(<16 x i32>, <16 x i32>) #0 955declare <16 x i32> @llvm.hexagon.V6.vavgh(<16 x i32>, <16 x i32>) #0 956declare <16 x i32> @llvm.hexagon.V6.vavgw(<16 x i32>, <16 x i32>) #0 957declare <16 x i32> @llvm.hexagon.V6.vnavgub(<16 x i32>, <16 x i32>) #0 958declare <16 x i32> @llvm.hexagon.V6.vnavgh(<16 x i32>, <16 x i32>) #0 959declare <16 x i32> @llvm.hexagon.V6.vnavgw(<16 x i32>, <16 x i32>) #0 960declare <16 x i32> @llvm.hexagon.V6.vavgubrnd(<16 x i32>, <16 x i32>) #0 961declare <16 x i32> @llvm.hexagon.V6.vavghrnd(<16 x i32>, <16 x i32>) #0 962declare <16 x i32> @llvm.hexagon.V6.vavguhrnd(<16 x i32>, <16 x i32>) #0 963declare <16 x i32> @llvm.hexagon.V6.vavgwrnd(<16 x i32>, <16 x i32>) #0 964declare <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32>, <32 x i32>) #0 965declare <16 x i32> @llvm.hexagon.V6.vand(<16 x i32>, <16 x i32>) #0 966declare <16 x i32> @llvm.hexagon.V6.vminub(<16 x i32>, <16 x i32>) #0 967declare <16 x i32> @llvm.hexagon.V6.vminuh(<16 x i32>, <16 x i32>) #0 968declare <16 x i32> @llvm.hexagon.V6.vminh(<16 x i32>, <16 x i32>) #0 969declare <16 x i32> @llvm.hexagon.V6.vminw(<16 x i32>, <16 x i32>) #0 970declare <16 x i32> @llvm.hexagon.V6.vmaxub(<16 x i32>, <16 x i32>) #0 971declare <16 x i32> @llvm.hexagon.V6.vmaxuh(<16 x i32>, <16 x i32>) #0 972declare <16 x i32> @llvm.hexagon.V6.vmaxh(<16 x i32>, <16 x i32>) #0 973declare <16 x i32> @llvm.hexagon.V6.vmaxw(<16 x i32>, <16 x i32>) #0 974declare <16 x i32> @llvm.hexagon.V6.vdelta(<16 x i32>, <16 x i32>) #0 975declare <16 x i32> @llvm.hexagon.V6.vrdelta(<16 x i32>, <16 x i32>) #0 976declare <16 x i32> @llvm.hexagon.V6.vdealb4w(<16 x i32>, <16 x i32>) #0 977declare <16 x i32> @llvm.hexagon.V6.vshuffob(<16 x i32>, <16 x i32>) #0 978declare <16 x i32> @llvm.hexagon.V6.vshuffeb(<16 x i32>, <16 x i32>) #0 979declare <16 x i32> @llvm.hexagon.V6.vshufeh(<16 x i32>, <16 x i32>) #0 980declare <16 x i32> @llvm.hexagon.V6.vshufoh(<16 x i32>, <16 x i32>) #0 981declare <32 x i32> @llvm.hexagon.V6.vshufoeh(<16 x i32>, <16 x i32>) #0 982declare <32 x i32> @llvm.hexagon.V6.vcombine(<16 x i32>, <16 x i32>) #0 983declare <32 x i32> @llvm.hexagon.V6.vshufoeb(<16 x i32>, <16 x i32>) #0 984declare <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32>, <16 x i32>) #0 985declare <16 x i32> @llvm.hexagon.V6.vsatwh(<16 x i32>, <16 x i32>) #0 986declare <16 x i32> @llvm.hexagon.V6.vroundwh(<16 x i32>, <16 x i32>) #0 987declare <16 x i32> @llvm.hexagon.V6.vroundhb(<16 x i32>, <16 x i32>) #0 988declare <16 x i32> @llvm.hexagon.V6.vroundwuh(<16 x i32>, <16 x i32>) #0 989declare <16 x i32> @llvm.hexagon.V6.vroundhub(<16 x i32>, <16 x i32>) #0 990declare <16 x i32> @llvm.hexagon.V6.vasrwv(<16 x i32>, <16 x i32>) #0 991declare <16 x i32> @llvm.hexagon.V6.vlsrwv(<16 x i32>, <16 x i32>) #0 992declare <16 x i32> @llvm.hexagon.V6.vasrhv(<16 x i32>, <16 x i32>) #0 993declare <16 x i32> @llvm.hexagon.V6.vlsrhv(<16 x i32>, <16 x i32>) #0 994declare <16 x i32> @llvm.hexagon.V6.vaslwv(<16 x i32>, <16 x i32>) #0 995declare <16 x i32> @llvm.hexagon.V6.vaslhv(<16 x i32>, <16 x i32>) #0 996declare <16 x i32> @llvm.hexagon.V6.vaddb(<16 x i32>, <16 x i32>) #0 997declare <16 x i32> @llvm.hexagon.V6.vor(<16 x i32>, <16 x i32>) #0 998declare <16 x i32> @llvm.hexagon.V6.vxor(<16 x i32>, <16 x i32>) #0 999declare <16 x i32> @llvm.hexagon.V6.vaddw(<16 x i32>, <16 x i32>) #0 1000declare <16 x i32> @llvm.hexagon.V6.vaddubsat(<16 x i32>, <16 x i32>) #0 1001declare <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32>, <16 x i32>) #0 1002declare <16 x i32> @llvm.hexagon.V6.vaddbq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1003declare <16 x i32> @llvm.hexagon.V6.vaddhq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1004declare <16 x i32> @llvm.hexagon.V6.vaddwq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1005declare <16 x i32> @llvm.hexagon.V6.vaddbnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1006declare <16 x i32> @llvm.hexagon.V6.vaddhnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1007declare <16 x i32> @llvm.hexagon.V6.vaddwnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1008declare <16 x i32> @llvm.hexagon.V6.vsubbq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1009declare <16 x i32> @llvm.hexagon.V6.vsubhq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1010declare <16 x i32> @llvm.hexagon.V6.vsubwq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1011declare <16 x i32> @llvm.hexagon.V6.vsubbnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1012declare <16 x i32> @llvm.hexagon.V6.vsubhnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1013declare <16 x i32> @llvm.hexagon.V6.vsubwnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 1014declare <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32>) #0 1015declare <16 x i32> @llvm.hexagon.V6.vabsh.sat(<16 x i32>) #0 1016declare <16 x i32> @llvm.hexagon.V6.vabsw(<16 x i32>) #0 1017declare <16 x i32> @llvm.hexagon.V6.vabsw.sat(<16 x i32>) #0 1018declare <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32>) #0 1019declare <16 x i32> @llvm.hexagon.V6.vdealh(<16 x i32>) #0 1020declare <16 x i32> @llvm.hexagon.V6.vdealb(<16 x i32>) #0 1021declare <32 x i32> @llvm.hexagon.V6.vunpackub(<16 x i32>) #0 1022declare <32 x i32> @llvm.hexagon.V6.vunpackuh(<16 x i32>) #0 1023declare <32 x i32> @llvm.hexagon.V6.vunpackb(<16 x i32>) #0 1024declare <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32>) #0 1025declare <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32>) #0 1026declare <16 x i32> @llvm.hexagon.V6.vshuffb(<16 x i32>) #0 1027declare <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32>) #0 1028declare <32 x i32> @llvm.hexagon.V6.vzh(<16 x i32>) #0 1029declare <32 x i32> @llvm.hexagon.V6.vsb(<16 x i32>) #0 1030declare <32 x i32> @llvm.hexagon.V6.vsh(<16 x i32>) #0 1031declare <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32>) #0 1032 1033attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" } 1034 1035