Krzysztof Parzyszek | 046090d | 2018-03-12 14:01:28 +0000 | [diff] [blame] | 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]+}}) |
| 5 | define <16 x i32> @test1(<16 x i32> %a, <16 x i32> %b) #0 { |
| 6 | entry: |
| 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]+}}) |
| 13 | define <16 x i32> @test2(<16 x i32> %a, <16 x i32> %b) #0 { |
| 14 | entry: |
| 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]+}}) |
| 21 | define <16 x i32> @test3(<16 x i32> %a, <16 x i32> %b) #0 { |
| 22 | entry: |
| 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) |
| 29 | define <16 x i32> @test4(<16 x i32> %a, <16 x i32> %b) #0 { |
| 30 | entry: |
| 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 |
| 37 | define <16 x i32> @test5(<16 x i32> %a, <16 x i32> %b) #0 { |
| 38 | entry: |
| 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 |
| 45 | define <16 x i32> @test6(<16 x i32> %a, <16 x i32> %b) #0 { |
| 46 | entry: |
| 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 |
| 53 | define <16 x i32> @test7(<16 x i32> %a, <16 x i32> %b) #0 { |
| 54 | entry: |
| 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 |
| 61 | define <16 x i32> @test8(<16 x i32> %a, <16 x i32> %b) #0 { |
| 62 | entry: |
| 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) |
| 69 | define <16 x i32> @test9(<16 x i32> %a, <16 x i32> %b) #0 { |
| 70 | entry: |
| 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) |
| 77 | define <16 x i32> @test10(<16 x i32> %a, <16 x i32> %b) #0 { |
| 78 | entry: |
| 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) |
| 85 | define <16 x i32> @test11(<16 x i32> %a, <16 x i32> %b) #0 { |
| 86 | entry: |
| 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 |
| 93 | define <16 x i32> @test12(<16 x i32> %a, <16 x i32> %b) #0 { |
| 94 | entry: |
| 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 |
| 101 | define <16 x i32> @test13(<16 x i32> %a, <16 x i32> %b) #0 { |
| 102 | entry: |
| 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 |
| 109 | define <16 x i32> @test14(<16 x i32> %a, <16 x i32> %b) #0 { |
| 110 | entry: |
| 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 |
| 117 | define <16 x i32> @test15(<16 x i32> %a, <16 x i32> %b) #0 { |
| 118 | entry: |
| 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) |
| 125 | define <32 x i32> @test16(<32 x i32> %a, <32 x i32> %b) #0 { |
| 126 | entry: |
| 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) |
| 133 | define <32 x i32> @test17(<32 x i32> %a, <32 x i32> %b) #0 { |
| 134 | entry: |
| 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) |
| 141 | define <32 x i32> @test18(<32 x i32> %a, <32 x i32> %b) #0 { |
| 142 | entry: |
| 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 |
| 149 | define <32 x i32> @test19(<32 x i32> %a, <32 x i32> %b) #0 { |
| 150 | entry: |
| 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 |
| 157 | define <32 x i32> @test20(<32 x i32> %a, <32 x i32> %b) #0 { |
| 158 | entry: |
| 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 |
| 165 | define <32 x i32> @test21(<32 x i32> %a, <32 x i32> %b) #0 { |
| 166 | entry: |
| 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 |
| 173 | define <32 x i32> @test22(<32 x i32> %a, <32 x i32> %b) #0 { |
| 174 | entry: |
| 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) |
| 181 | define <32 x i32> @test23(<32 x i32> %a, <32 x i32> %b) #0 { |
| 182 | entry: |
| 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) |
| 189 | define <32 x i32> @test24(<32 x i32> %a, <32 x i32> %b) #0 { |
| 190 | entry: |
| 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) |
| 197 | define <32 x i32> @test25(<32 x i32> %a, <32 x i32> %b) #0 { |
| 198 | entry: |
| 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 |
| 205 | define <32 x i32> @test26(<32 x i32> %a, <32 x i32> %b) #0 { |
| 206 | entry: |
| 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 |
| 213 | define <32 x i32> @test27(<32 x i32> %a, <32 x i32> %b) #0 { |
| 214 | entry: |
| 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 |
| 221 | define <32 x i32> @test28(<32 x i32> %a, <32 x i32> %b) #0 { |
| 222 | entry: |
| 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 |
| 229 | define <32 x i32> @test29(<32 x i32> %a, <32 x i32> %b) #0 { |
| 230 | entry: |
| 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) |
| 237 | define <32 x i32> @test30(<16 x i32> %a, <16 x i32> %b) #0 { |
| 238 | entry: |
| 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) |
| 245 | define <32 x i32> @test31(<16 x i32> %a, <16 x i32> %b) #0 { |
| 246 | entry: |
| 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) |
| 253 | define <32 x i32> @test32(<16 x i32> %a, <16 x i32> %b) #0 { |
| 254 | entry: |
| 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) |
| 261 | define <32 x i32> @test33(<16 x i32> %a, <16 x i32> %b) #0 { |
| 262 | entry: |
| 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) |
| 269 | define <32 x i32> @test34(<16 x i32> %a, <16 x i32> %b) #0 { |
| 270 | entry: |
| 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) |
| 277 | define <32 x i32> @test35(<16 x i32> %a, <16 x i32> %b) #0 { |
| 278 | entry: |
| 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) |
| 285 | define <16 x i32> @test36(<16 x i32> %a, <16 x i32> %b) #0 { |
| 286 | entry: |
| 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) |
| 293 | define <16 x i32> @test37(<16 x i32> %a, <16 x i32> %b) #0 { |
| 294 | entry: |
| 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) |
| 301 | define <16 x i32> @test38(<16 x i32> %a, <16 x i32> %b) #0 { |
| 302 | entry: |
| 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) |
| 309 | define <16 x i32> @test39(<16 x i32> %a, <16 x i32> %b) #0 { |
| 310 | entry: |
| 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) |
| 317 | define <16 x i32> @test40(<16 x i32> %a, <16 x i32> %b) #0 { |
| 318 | entry: |
| 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) |
| 325 | define <16 x i32> @test41(<16 x i32> %a, <16 x i32> %b) #0 { |
| 326 | entry: |
| 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) |
| 333 | define <16 x i32> @test42(<16 x i32> %a, <16 x i32> %b) #0 { |
| 334 | entry: |
| 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) |
| 341 | define <16 x i32> @test43(<16 x i32> %a, <16 x i32> %b) #0 { |
| 342 | entry: |
| 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) |
| 349 | define <16 x i32> @test44(<16 x i32> %a, <16 x i32> %b) #0 { |
| 350 | entry: |
| 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) |
| 357 | define <16 x i32> @test45(<16 x i32> %a, <16 x i32> %b) #0 { |
| 358 | entry: |
| 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) |
| 365 | define <16 x i32> @test46(<16 x i32> %a, <16 x i32> %b) #0 { |
| 366 | entry: |
| 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 |
| 373 | define <16 x i32> @test47(<16 x i32> %a, <16 x i32> %b) #0 { |
| 374 | entry: |
| 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 |
| 381 | define <16 x i32> @test48(<16 x i32> %a, <16 x i32> %b) #0 { |
| 382 | entry: |
| 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 |
| 389 | define <16 x i32> @test49(<16 x i32> %a, <16 x i32> %b) #0 { |
| 390 | entry: |
| 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 |
| 397 | define <16 x i32> @test50(<16 x i32> %a, <16 x i32> %b) #0 { |
| 398 | entry: |
| 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) |
| 405 | define <32 x i32> @test51(<32 x i32> %a, <32 x i32> %b) #0 { |
| 406 | entry: |
| 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) |
| 413 | define <16 x i32> @test52(<16 x i32> %a, <16 x i32> %b) #0 { |
| 414 | entry: |
| 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) |
| 421 | define <16 x i32> @test53(<16 x i32> %a, <16 x i32> %b) #0 { |
| 422 | entry: |
| 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) |
| 429 | define <16 x i32> @test54(<16 x i32> %a, <16 x i32> %b) #0 { |
| 430 | entry: |
| 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) |
| 437 | define <16 x i32> @test55(<16 x i32> %a, <16 x i32> %b) #0 { |
| 438 | entry: |
| 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) |
| 445 | define <16 x i32> @test56(<16 x i32> %a, <16 x i32> %b) #0 { |
| 446 | entry: |
| 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) |
| 453 | define <16 x i32> @test57(<16 x i32> %a, <16 x i32> %b) #0 { |
| 454 | entry: |
| 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) |
| 461 | define <16 x i32> @test58(<16 x i32> %a, <16 x i32> %b) #0 { |
| 462 | entry: |
| 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) |
| 469 | define <16 x i32> @test59(<16 x i32> %a, <16 x i32> %b) #0 { |
| 470 | entry: |
| 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]+}}) |
| 477 | define <16 x i32> @test60(<16 x i32> %a, <16 x i32> %b) #0 { |
| 478 | entry: |
| 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]+}}) |
| 485 | define <16 x i32> @test61(<16 x i32> %a, <16 x i32> %b) #0 { |
| 486 | entry: |
| 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) |
| 493 | define <16 x i32> @test62(<16 x i32> %a, <16 x i32> %b) #0 { |
| 494 | entry: |
| 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) |
| 501 | define <16 x i32> @test63(<16 x i32> %a, <16 x i32> %b) #0 { |
| 502 | entry: |
| 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) |
| 509 | define <16 x i32> @test64(<16 x i32> %a, <16 x i32> %b) #0 { |
| 510 | entry: |
| 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) |
| 517 | define <16 x i32> @test65(<16 x i32> %a, <16 x i32> %b) #0 { |
| 518 | entry: |
| 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) |
| 525 | define <16 x i32> @test66(<16 x i32> %a, <16 x i32> %b) #0 { |
| 526 | entry: |
| 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) |
| 533 | define <32 x i32> @test67(<16 x i32> %a, <16 x i32> %b) #0 { |
| 534 | entry: |
| 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) |
| 541 | define <32 x i32> @test68(<16 x i32> %a, <16 x i32> %b) #0 { |
| 542 | entry: |
| 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]+}}) |
| 549 | define <32 x i32> @test69(<16 x i32> %a, <16 x i32> %b) #0 { |
| 550 | entry: |
| 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) |
| 557 | define <16 x i32> @test70(<16 x i32> %a, <16 x i32> %b) #0 { |
| 558 | entry: |
| 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) |
| 565 | define <16 x i32> @test71(<16 x i32> %a, <16 x i32> %b) #0 { |
| 566 | entry: |
| 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 |
| 573 | define <16 x i32> @test72(<16 x i32> %a, <16 x i32> %b) #0 { |
| 574 | entry: |
| 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 |
| 581 | define <16 x i32> @test73(<16 x i32> %a, <16 x i32> %b) #0 { |
| 582 | entry: |
| 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 |
| 589 | define <16 x i32> @test74(<16 x i32> %a, <16 x i32> %b) #0 { |
| 590 | entry: |
| 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 |
| 597 | define <16 x i32> @test75(<16 x i32> %a, <16 x i32> %b) #0 { |
| 598 | entry: |
| 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) |
| 605 | define <16 x i32> @test76(<16 x i32> %a, <16 x i32> %b) #0 { |
| 606 | entry: |
| 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) |
| 613 | define <16 x i32> @test77(<16 x i32> %a, <16 x i32> %b) #0 { |
| 614 | entry: |
| 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) |
| 621 | define <16 x i32> @test78(<16 x i32> %a, <16 x i32> %b) #0 { |
| 622 | entry: |
| 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) |
| 629 | define <16 x i32> @test79(<16 x i32> %a, <16 x i32> %b) #0 { |
| 630 | entry: |
| 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) |
| 637 | define <16 x i32> @test80(<16 x i32> %a, <16 x i32> %b) #0 { |
| 638 | entry: |
| 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) |
| 645 | define <16 x i32> @test81(<16 x i32> %a, <16 x i32> %b) #0 { |
| 646 | entry: |
| 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) |
| 653 | define <16 x i32> @test82(<16 x i32> %a, <16 x i32> %b) #0 { |
| 654 | entry: |
| 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) |
| 661 | define <16 x i32> @test83(<16 x i32> %a, <16 x i32> %b) #0 { |
| 662 | entry: |
| 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 |
| 669 | define <16 x i32> @test84(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 670 | entry: |
| 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 |
| 678 | define <16 x i32> @test85(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 679 | entry: |
| 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 |
| 687 | define <16 x i32> @test86(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 688 | entry: |
| 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 |
| 696 | define <16 x i32> @test87(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 697 | entry: |
| 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 |
| 705 | define <16 x i32> @test88(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 706 | entry: |
| 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 |
| 714 | define <16 x i32> @test89(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 715 | entry: |
| 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 |
| 723 | define <16 x i32> @test90(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 724 | entry: |
| 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 |
| 732 | define <16 x i32> @test91(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 733 | entry: |
| 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 |
| 741 | define <16 x i32> @test92(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 742 | entry: |
| 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 |
| 750 | define <16 x i32> @test93(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 751 | entry: |
| 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 |
| 759 | define <16 x i32> @test94(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 760 | entry: |
| 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 |
| 768 | define <16 x i32> @test95(<16 x i32> %a, <16 x i32> %b, <16 x i32> %c) #0 { |
| 769 | entry: |
| 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) |
| 777 | define <16 x i32> @test96(<16 x i32> %a) #0 { |
| 778 | entry: |
| 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 |
| 785 | define <16 x i32> @test97(<16 x i32> %a) #0 { |
| 786 | entry: |
| 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) |
| 793 | define <16 x i32> @test98(<16 x i32> %a) #0 { |
| 794 | entry: |
| 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 |
| 801 | define <16 x i32> @test99(<16 x i32> %a) #0 { |
| 802 | entry: |
| 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]+}}) |
| 809 | define <16 x i32> @test100(<16 x i32> %a) #0 { |
| 810 | entry: |
| 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) |
| 817 | define <16 x i32> @test101(<16 x i32> %a) #0 { |
| 818 | entry: |
| 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) |
| 825 | define <16 x i32> @test102(<16 x i32> %a) #0 { |
| 826 | entry: |
| 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) |
| 833 | define <32 x i32> @test103(<16 x i32> %a) #0 { |
| 834 | entry: |
| 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) |
| 841 | define <32 x i32> @test104(<16 x i32> %a) #0 { |
| 842 | entry: |
| 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) |
| 849 | define <32 x i32> @test105(<16 x i32> %a) #0 { |
| 850 | entry: |
| 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) |
| 857 | define <32 x i32> @test106(<16 x i32> %a) #0 { |
| 858 | entry: |
| 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) |
| 865 | define <16 x i32> @test107(<16 x i32> %a) #0 { |
| 866 | entry: |
| 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) |
| 873 | define <16 x i32> @test108(<16 x i32> %a) #0 { |
| 874 | entry: |
| 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) |
| 881 | define <32 x i32> @test109(<16 x i32> %a) #0 { |
| 882 | entry: |
| 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) |
| 889 | define <32 x i32> @test110(<16 x i32> %a) #0 { |
| 890 | entry: |
| 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) |
| 897 | define <32 x i32> @test111(<16 x i32> %a) #0 { |
| 898 | entry: |
| 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) |
| 905 | define <32 x i32> @test112(<16 x i32> %a) #0 { |
| 906 | entry: |
| 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]+}} |
| 913 | define <16 x i32> @test113(<16 x i32> %a) #0 { |
| 914 | entry: |
| 915 | %0 = tail call <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32> %a) |
| 916 | ret <16 x i32> %0 |
| 917 | } |
| 918 | |
| 919 | declare <16 x i32> @llvm.hexagon.V6.vadduhsat(<16 x i32>, <16 x i32>) #0 |
| 920 | declare <16 x i32> @llvm.hexagon.V6.vaddhsat(<16 x i32>, <16 x i32>) #0 |
| 921 | declare <16 x i32> @llvm.hexagon.V6.vaddwsat(<16 x i32>, <16 x i32>) #0 |
| 922 | declare <16 x i32> @llvm.hexagon.V6.vsubb(<16 x i32>, <16 x i32>) #0 |
| 923 | declare <16 x i32> @llvm.hexagon.V6.vsubh(<16 x i32>, <16 x i32>) #0 |
| 924 | declare <16 x i32> @llvm.hexagon.V6.vsubw(<16 x i32>, <16 x i32>) #0 |
| 925 | declare <16 x i32> @llvm.hexagon.V6.vsububsat(<16 x i32>, <16 x i32>) #0 |
| 926 | declare <16 x i32> @llvm.hexagon.V6.vsubuhsat(<16 x i32>, <16 x i32>) #0 |
| 927 | declare <16 x i32> @llvm.hexagon.V6.vsubhsat(<16 x i32>, <16 x i32>) #0 |
| 928 | declare <16 x i32> @llvm.hexagon.V6.vsubwsat(<16 x i32>, <16 x i32>) #0 |
| 929 | declare <32 x i32> @llvm.hexagon.V6.vaddb.dv(<32 x i32>, <32 x i32>) #0 |
| 930 | declare <32 x i32> @llvm.hexagon.V6.vaddh.dv(<32 x i32>, <32 x i32>) #0 |
| 931 | declare <32 x i32> @llvm.hexagon.V6.vaddw.dv(<32 x i32>, <32 x i32>) #0 |
| 932 | declare <32 x i32> @llvm.hexagon.V6.vaddubsat.dv(<32 x i32>, <32 x i32>) #0 |
| 933 | declare <32 x i32> @llvm.hexagon.V6.vadduhsat.dv(<32 x i32>, <32 x i32>) #0 |
| 934 | declare <32 x i32> @llvm.hexagon.V6.vaddhsat.dv(<32 x i32>, <32 x i32>) #0 |
| 935 | declare <32 x i32> @llvm.hexagon.V6.vaddwsat.dv(<32 x i32>, <32 x i32>) #0 |
| 936 | declare <32 x i32> @llvm.hexagon.V6.vsubb.dv(<32 x i32>, <32 x i32>) #0 |
| 937 | declare <32 x i32> @llvm.hexagon.V6.vsubh.dv(<32 x i32>, <32 x i32>) #0 |
| 938 | declare <32 x i32> @llvm.hexagon.V6.vsubw.dv(<32 x i32>, <32 x i32>) #0 |
| 939 | declare <32 x i32> @llvm.hexagon.V6.vsububsat.dv(<32 x i32>, <32 x i32>) #0 |
| 940 | declare <32 x i32> @llvm.hexagon.V6.vsubuhsat.dv(<32 x i32>, <32 x i32>) #0 |
| 941 | declare <32 x i32> @llvm.hexagon.V6.vsubhsat.dv(<32 x i32>, <32 x i32>) #0 |
| 942 | declare <32 x i32> @llvm.hexagon.V6.vsubwsat.dv(<32 x i32>, <32 x i32>) #0 |
| 943 | declare <32 x i32> @llvm.hexagon.V6.vaddubh(<16 x i32>, <16 x i32>) #0 |
| 944 | declare <32 x i32> @llvm.hexagon.V6.vadduhw(<16 x i32>, <16 x i32>) #0 |
| 945 | declare <32 x i32> @llvm.hexagon.V6.vaddhw(<16 x i32>, <16 x i32>) #0 |
| 946 | declare <32 x i32> @llvm.hexagon.V6.vsububh(<16 x i32>, <16 x i32>) #0 |
| 947 | declare <32 x i32> @llvm.hexagon.V6.vsubuhw(<16 x i32>, <16 x i32>) #0 |
| 948 | declare <32 x i32> @llvm.hexagon.V6.vsubhw(<16 x i32>, <16 x i32>) #0 |
| 949 | declare <16 x i32> @llvm.hexagon.V6.vabsdiffub(<16 x i32>, <16 x i32>) #0 |
| 950 | declare <16 x i32> @llvm.hexagon.V6.vabsdiffh(<16 x i32>, <16 x i32>) #0 |
| 951 | declare <16 x i32> @llvm.hexagon.V6.vabsdiffuh(<16 x i32>, <16 x i32>) #0 |
| 952 | declare <16 x i32> @llvm.hexagon.V6.vabsdiffw(<16 x i32>, <16 x i32>) #0 |
| 953 | declare <16 x i32> @llvm.hexagon.V6.vavgub(<16 x i32>, <16 x i32>) #0 |
| 954 | declare <16 x i32> @llvm.hexagon.V6.vavguh(<16 x i32>, <16 x i32>) #0 |
| 955 | declare <16 x i32> @llvm.hexagon.V6.vavgh(<16 x i32>, <16 x i32>) #0 |
| 956 | declare <16 x i32> @llvm.hexagon.V6.vavgw(<16 x i32>, <16 x i32>) #0 |
| 957 | declare <16 x i32> @llvm.hexagon.V6.vnavgub(<16 x i32>, <16 x i32>) #0 |
| 958 | declare <16 x i32> @llvm.hexagon.V6.vnavgh(<16 x i32>, <16 x i32>) #0 |
| 959 | declare <16 x i32> @llvm.hexagon.V6.vnavgw(<16 x i32>, <16 x i32>) #0 |
| 960 | declare <16 x i32> @llvm.hexagon.V6.vavgubrnd(<16 x i32>, <16 x i32>) #0 |
| 961 | declare <16 x i32> @llvm.hexagon.V6.vavghrnd(<16 x i32>, <16 x i32>) #0 |
| 962 | declare <16 x i32> @llvm.hexagon.V6.vavguhrnd(<16 x i32>, <16 x i32>) #0 |
| 963 | declare <16 x i32> @llvm.hexagon.V6.vavgwrnd(<16 x i32>, <16 x i32>) #0 |
| 964 | declare <32 x i32> @llvm.hexagon.V6.vmpabuuv(<32 x i32>, <32 x i32>) #0 |
| 965 | declare <16 x i32> @llvm.hexagon.V6.vand(<16 x i32>, <16 x i32>) #0 |
| 966 | declare <16 x i32> @llvm.hexagon.V6.vminub(<16 x i32>, <16 x i32>) #0 |
| 967 | declare <16 x i32> @llvm.hexagon.V6.vminuh(<16 x i32>, <16 x i32>) #0 |
| 968 | declare <16 x i32> @llvm.hexagon.V6.vminh(<16 x i32>, <16 x i32>) #0 |
| 969 | declare <16 x i32> @llvm.hexagon.V6.vminw(<16 x i32>, <16 x i32>) #0 |
| 970 | declare <16 x i32> @llvm.hexagon.V6.vmaxub(<16 x i32>, <16 x i32>) #0 |
| 971 | declare <16 x i32> @llvm.hexagon.V6.vmaxuh(<16 x i32>, <16 x i32>) #0 |
| 972 | declare <16 x i32> @llvm.hexagon.V6.vmaxh(<16 x i32>, <16 x i32>) #0 |
| 973 | declare <16 x i32> @llvm.hexagon.V6.vmaxw(<16 x i32>, <16 x i32>) #0 |
| 974 | declare <16 x i32> @llvm.hexagon.V6.vdelta(<16 x i32>, <16 x i32>) #0 |
| 975 | declare <16 x i32> @llvm.hexagon.V6.vrdelta(<16 x i32>, <16 x i32>) #0 |
| 976 | declare <16 x i32> @llvm.hexagon.V6.vdealb4w(<16 x i32>, <16 x i32>) #0 |
| 977 | declare <16 x i32> @llvm.hexagon.V6.vshuffob(<16 x i32>, <16 x i32>) #0 |
| 978 | declare <16 x i32> @llvm.hexagon.V6.vshuffeb(<16 x i32>, <16 x i32>) #0 |
| 979 | declare <16 x i32> @llvm.hexagon.V6.vshufeh(<16 x i32>, <16 x i32>) #0 |
| 980 | declare <16 x i32> @llvm.hexagon.V6.vshufoh(<16 x i32>, <16 x i32>) #0 |
| 981 | declare <32 x i32> @llvm.hexagon.V6.vshufoeh(<16 x i32>, <16 x i32>) #0 |
| 982 | declare <32 x i32> @llvm.hexagon.V6.vcombine(<16 x i32>, <16 x i32>) #0 |
| 983 | declare <32 x i32> @llvm.hexagon.V6.vshufoeb(<16 x i32>, <16 x i32>) #0 |
| 984 | declare <16 x i32> @llvm.hexagon.V6.vsathub(<16 x i32>, <16 x i32>) #0 |
| 985 | declare <16 x i32> @llvm.hexagon.V6.vsatwh(<16 x i32>, <16 x i32>) #0 |
| 986 | declare <16 x i32> @llvm.hexagon.V6.vroundwh(<16 x i32>, <16 x i32>) #0 |
| 987 | declare <16 x i32> @llvm.hexagon.V6.vroundhb(<16 x i32>, <16 x i32>) #0 |
| 988 | declare <16 x i32> @llvm.hexagon.V6.vroundwuh(<16 x i32>, <16 x i32>) #0 |
| 989 | declare <16 x i32> @llvm.hexagon.V6.vroundhub(<16 x i32>, <16 x i32>) #0 |
| 990 | declare <16 x i32> @llvm.hexagon.V6.vasrwv(<16 x i32>, <16 x i32>) #0 |
| 991 | declare <16 x i32> @llvm.hexagon.V6.vlsrwv(<16 x i32>, <16 x i32>) #0 |
| 992 | declare <16 x i32> @llvm.hexagon.V6.vasrhv(<16 x i32>, <16 x i32>) #0 |
| 993 | declare <16 x i32> @llvm.hexagon.V6.vlsrhv(<16 x i32>, <16 x i32>) #0 |
| 994 | declare <16 x i32> @llvm.hexagon.V6.vaslwv(<16 x i32>, <16 x i32>) #0 |
| 995 | declare <16 x i32> @llvm.hexagon.V6.vaslhv(<16 x i32>, <16 x i32>) #0 |
| 996 | declare <16 x i32> @llvm.hexagon.V6.vaddb(<16 x i32>, <16 x i32>) #0 |
| 997 | declare <16 x i32> @llvm.hexagon.V6.vor(<16 x i32>, <16 x i32>) #0 |
| 998 | declare <16 x i32> @llvm.hexagon.V6.vxor(<16 x i32>, <16 x i32>) #0 |
| 999 | declare <16 x i32> @llvm.hexagon.V6.vaddw(<16 x i32>, <16 x i32>) #0 |
| 1000 | declare <16 x i32> @llvm.hexagon.V6.vaddubsat(<16 x i32>, <16 x i32>) #0 |
| 1001 | declare <16 x i32> @llvm.hexagon.V6.vaddh(<16 x i32>, <16 x i32>) #0 |
| 1002 | declare <16 x i32> @llvm.hexagon.V6.vaddbq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1003 | declare <16 x i32> @llvm.hexagon.V6.vaddhq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1004 | declare <16 x i32> @llvm.hexagon.V6.vaddwq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1005 | declare <16 x i32> @llvm.hexagon.V6.vaddbnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1006 | declare <16 x i32> @llvm.hexagon.V6.vaddhnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1007 | declare <16 x i32> @llvm.hexagon.V6.vaddwnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1008 | declare <16 x i32> @llvm.hexagon.V6.vsubbq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1009 | declare <16 x i32> @llvm.hexagon.V6.vsubhq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1010 | declare <16 x i32> @llvm.hexagon.V6.vsubwq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1011 | declare <16 x i32> @llvm.hexagon.V6.vsubbnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1012 | declare <16 x i32> @llvm.hexagon.V6.vsubhnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1013 | declare <16 x i32> @llvm.hexagon.V6.vsubwnq(<512 x i1>, <16 x i32>, <16 x i32>) #0 |
| 1014 | declare <16 x i32> @llvm.hexagon.V6.vabsh(<16 x i32>) #0 |
| 1015 | declare <16 x i32> @llvm.hexagon.V6.vabsh.sat(<16 x i32>) #0 |
| 1016 | declare <16 x i32> @llvm.hexagon.V6.vabsw(<16 x i32>) #0 |
| 1017 | declare <16 x i32> @llvm.hexagon.V6.vabsw.sat(<16 x i32>) #0 |
| 1018 | declare <16 x i32> @llvm.hexagon.V6.vnot(<16 x i32>) #0 |
| 1019 | declare <16 x i32> @llvm.hexagon.V6.vdealh(<16 x i32>) #0 |
| 1020 | declare <16 x i32> @llvm.hexagon.V6.vdealb(<16 x i32>) #0 |
| 1021 | declare <32 x i32> @llvm.hexagon.V6.vunpackub(<16 x i32>) #0 |
| 1022 | declare <32 x i32> @llvm.hexagon.V6.vunpackuh(<16 x i32>) #0 |
| 1023 | declare <32 x i32> @llvm.hexagon.V6.vunpackb(<16 x i32>) #0 |
| 1024 | declare <32 x i32> @llvm.hexagon.V6.vunpackh(<16 x i32>) #0 |
| 1025 | declare <16 x i32> @llvm.hexagon.V6.vshuffh(<16 x i32>) #0 |
| 1026 | declare <16 x i32> @llvm.hexagon.V6.vshuffb(<16 x i32>) #0 |
| 1027 | declare <32 x i32> @llvm.hexagon.V6.vzb(<16 x i32>) #0 |
| 1028 | declare <32 x i32> @llvm.hexagon.V6.vzh(<16 x i32>) #0 |
| 1029 | declare <32 x i32> @llvm.hexagon.V6.vsb(<16 x i32>) #0 |
| 1030 | declare <32 x i32> @llvm.hexagon.V6.vsh(<16 x i32>) #0 |
| 1031 | declare <16 x i32> @llvm.hexagon.V6.vassign(<16 x i32>) #0 |
| 1032 | |
| 1033 | attributes #0 = { nounwind readnone "target-cpu"="hexagonv60" "target-features"="+hvxv60,+hvx-length64b" } |
| 1034 | |