Lines Matching refs:VEX

3 ; RUN: llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,VEX…
4 … llc < %s -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,VEX,AVX2
31 ; VEX-LABEL: fptosi_2f64_to_2i64:
32 ; VEX: # %bb.0:
33 ; VEX-NEXT: vcvttsd2si %xmm0, %rax
34 ; VEX-NEXT: vmovq %rax, %xmm1
35 ; VEX-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
36 ; VEX-NEXT: vcvttsd2si %xmm0, %rax
37 ; VEX-NEXT: vmovq %rax, %xmm0
38 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
39 ; VEX-NEXT: retq
276 ; VEX-LABEL: fptoui_2f64_to_2i64:
277 ; VEX: # %bb.0:
278 ; VEX-NEXT: vmovsd {{.*#+}} xmm1 = mem[0],zero
279 ; VEX-NEXT: vsubsd %xmm1, %xmm0, %xmm2
280 ; VEX-NEXT: vcvttsd2si %xmm2, %rax
281 ; VEX-NEXT: vcvttsd2si %xmm0, %rcx
282 ; VEX-NEXT: movq %rcx, %rdx
283 ; VEX-NEXT: sarq $63, %rdx
284 ; VEX-NEXT: andq %rax, %rdx
285 ; VEX-NEXT: orq %rcx, %rdx
286 ; VEX-NEXT: vmovq %rdx, %xmm2
287 ; VEX-NEXT: vpermilpd {{.*#+}} xmm0 = xmm0[1,0]
288 ; VEX-NEXT: vsubsd %xmm1, %xmm0, %xmm1
289 ; VEX-NEXT: vcvttsd2si %xmm1, %rax
290 ; VEX-NEXT: vcvttsd2si %xmm0, %rcx
291 ; VEX-NEXT: movq %rcx, %rdx
292 ; VEX-NEXT: sarq $63, %rdx
293 ; VEX-NEXT: andq %rax, %rdx
294 ; VEX-NEXT: orq %rcx, %rdx
295 ; VEX-NEXT: vmovq %rdx, %xmm0
296 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm2[0],xmm0[0]
297 ; VEX-NEXT: retq
347 ; VEX-LABEL: fptoui_2f64_to_4i32:
348 ; VEX: # %bb.0:
349 ; VEX-NEXT: vcvttpd2dq %xmm0, %xmm1
350 ; VEX-NEXT: vpsrad $31, %xmm1, %xmm2
351 ; VEX-NEXT: vaddpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
352 ; VEX-NEXT: vcvttpd2dq %xmm0, %xmm0
353 ; VEX-NEXT: vandpd %xmm2, %xmm0, %xmm0
354 ; VEX-NEXT: vorpd %xmm0, %xmm1, %xmm0
355 ; VEX-NEXT: retq
399 ; VEX-LABEL: fptoui_2f64_to_2i32:
400 ; VEX: # %bb.0:
401 ; VEX-NEXT: vcvttpd2dq %xmm0, %xmm1
402 ; VEX-NEXT: vpsrad $31, %xmm1, %xmm2
403 ; VEX-NEXT: vaddpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
404 ; VEX-NEXT: vcvttpd2dq %xmm0, %xmm0
405 ; VEX-NEXT: vandpd %xmm2, %xmm0, %xmm0
406 ; VEX-NEXT: vorpd %xmm0, %xmm1, %xmm0
407 ; VEX-NEXT: retq
811 ; VEX-LABEL: fptosi_2f32_to_2i64:
812 ; VEX: # %bb.0:
813 ; VEX-NEXT: vcvttss2si %xmm0, %rax
814 ; VEX-NEXT: vmovq %rax, %xmm1
815 ; VEX-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
816 ; VEX-NEXT: vcvttss2si %xmm0, %rax
817 ; VEX-NEXT: vmovq %rax, %xmm0
818 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
819 ; VEX-NEXT: retq
870 ; VEX-LABEL: fptosi_4f32_to_2i64:
871 ; VEX: # %bb.0:
872 ; VEX-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
873 ; VEX-NEXT: vcvttss2si %xmm1, %rax
874 ; VEX-NEXT: vcvttss2si %xmm0, %rcx
875 ; VEX-NEXT: vmovq %rcx, %xmm0
876 ; VEX-NEXT: vmovq %rax, %xmm1
877 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
878 ; VEX-NEXT: retq
1305 ; VEX-LABEL: fptoui_2f32_to_2i64:
1306 ; VEX: # %bb.0:
1307 ; VEX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
1308 ; VEX-NEXT: vsubss %xmm1, %xmm0, %xmm2
1309 ; VEX-NEXT: vcvttss2si %xmm2, %rax
1310 ; VEX-NEXT: vcvttss2si %xmm0, %rcx
1311 ; VEX-NEXT: movq %rcx, %rdx
1312 ; VEX-NEXT: sarq $63, %rdx
1313 ; VEX-NEXT: andq %rax, %rdx
1314 ; VEX-NEXT: orq %rcx, %rdx
1315 ; VEX-NEXT: vmovq %rdx, %xmm2
1316 ; VEX-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
1317 ; VEX-NEXT: vsubss %xmm1, %xmm0, %xmm1
1318 ; VEX-NEXT: vcvttss2si %xmm1, %rax
1319 ; VEX-NEXT: vcvttss2si %xmm0, %rcx
1320 ; VEX-NEXT: movq %rcx, %rdx
1321 ; VEX-NEXT: sarq $63, %rdx
1322 ; VEX-NEXT: andq %rax, %rdx
1323 ; VEX-NEXT: orq %rcx, %rdx
1324 ; VEX-NEXT: vmovq %rdx, %xmm0
1325 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm2[0],xmm0[0]
1326 ; VEX-NEXT: retq
1391 ; VEX-LABEL: fptoui_4f32_to_2i64:
1392 ; VEX: # %bb.0:
1393 ; VEX-NEXT: vmovshdup {{.*#+}} xmm1 = xmm0[1,1,3,3]
1394 ; VEX-NEXT: vmovss {{.*#+}} xmm2 = mem[0],zero,zero,zero
1395 ; VEX-NEXT: vsubss %xmm2, %xmm1, %xmm3
1396 ; VEX-NEXT: vcvttss2si %xmm3, %rax
1397 ; VEX-NEXT: vcvttss2si %xmm1, %rcx
1398 ; VEX-NEXT: movq %rcx, %rdx
1399 ; VEX-NEXT: sarq $63, %rdx
1400 ; VEX-NEXT: andq %rax, %rdx
1401 ; VEX-NEXT: orq %rcx, %rdx
1402 ; VEX-NEXT: vsubss %xmm2, %xmm0, %xmm1
1403 ; VEX-NEXT: vcvttss2si %xmm1, %rax
1404 ; VEX-NEXT: vcvttss2si %xmm0, %rcx
1405 ; VEX-NEXT: movq %rcx, %rsi
1406 ; VEX-NEXT: sarq $63, %rsi
1407 ; VEX-NEXT: andq %rax, %rsi
1408 ; VEX-NEXT: orq %rcx, %rsi
1409 ; VEX-NEXT: vmovq %rsi, %xmm0
1410 ; VEX-NEXT: vmovq %rdx, %xmm1
1411 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm0[0],xmm1[0]
1412 ; VEX-NEXT: retq
2185 ; VEX-LABEL: fptosi_2f32_to_2i8:
2186 ; VEX: # %bb.0:
2187 ; VEX-NEXT: vcvttps2dq %xmm0, %xmm0
2188 ; VEX-NEXT: vpackssdw %xmm0, %xmm0, %xmm0
2189 ; VEX-NEXT: vpacksswb %xmm0, %xmm0, %xmm0
2190 ; VEX-NEXT: retq
2245 ; VEX-LABEL: fptoui_2f32_to_2i8:
2246 ; VEX: # %bb.0:
2247 ; VEX-NEXT: vcvttps2dq %xmm0, %xmm0
2248 ; VEX-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
2249 ; VEX-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
2250 ; VEX-NEXT: retq
2305 ; VEX-LABEL: fptosi_2f64_to_2i8:
2306 ; VEX: # %bb.0:
2307 ; VEX-NEXT: vcvttpd2dq %xmm0, %xmm0
2308 ; VEX-NEXT: vpackssdw %xmm0, %xmm0, %xmm0
2309 ; VEX-NEXT: vpacksswb %xmm0, %xmm0, %xmm0
2310 ; VEX-NEXT: retq
2365 ; VEX-LABEL: fptoui_2f64_to_2i8:
2366 ; VEX: # %bb.0:
2367 ; VEX-NEXT: vcvttpd2dq %xmm0, %xmm0
2368 ; VEX-NEXT: vpackusdw %xmm0, %xmm0, %xmm0
2369 ; VEX-NEXT: vpackuswb %xmm0, %xmm0, %xmm0
2370 ; VEX-NEXT: retq
2429 ; VEX-LABEL: fptosi_8f64_to_8i16:
2430 ; VEX: # %bb.0:
2431 ; VEX-NEXT: vcvttpd2dq %ymm1, %xmm1
2432 ; VEX-NEXT: vcvttpd2dq %ymm0, %xmm0
2433 ; VEX-NEXT: vpackssdw %xmm1, %xmm0, %xmm0
2434 ; VEX-NEXT: vzeroupper
2435 ; VEX-NEXT: retq
2488 ; VEX-LABEL: fptoui_8f64_to_8i16:
2489 ; VEX: # %bb.0:
2490 ; VEX-NEXT: vcvttpd2dq %ymm1, %xmm1
2491 ; VEX-NEXT: vcvttpd2dq %ymm0, %xmm0
2492 ; VEX-NEXT: vpackusdw %xmm1, %xmm0, %xmm0
2493 ; VEX-NEXT: vzeroupper
2494 ; VEX-NEXT: retq
2633 ; VEX-LABEL: fptosi_2f32_to_2i64_load:
2634 ; VEX: # %bb.0:
2635 ; VEX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
2636 ; VEX-NEXT: vcvttss2si %xmm0, %rax
2637 ; VEX-NEXT: vmovq %rax, %xmm1
2638 ; VEX-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
2639 ; VEX-NEXT: vcvttss2si %xmm0, %rax
2640 ; VEX-NEXT: vmovq %rax, %xmm0
2641 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm1[0],xmm0[0]
2642 ; VEX-NEXT: retq
2709 ; VEX-LABEL: fptoui_2f32_to_2i64_load:
2710 ; VEX: # %bb.0:
2711 ; VEX-NEXT: vmovsd {{.*#+}} xmm0 = mem[0],zero
2712 ; VEX-NEXT: vmovss {{.*#+}} xmm1 = mem[0],zero,zero,zero
2713 ; VEX-NEXT: vsubss %xmm1, %xmm0, %xmm2
2714 ; VEX-NEXT: vcvttss2si %xmm2, %rax
2715 ; VEX-NEXT: vcvttss2si %xmm0, %rcx
2716 ; VEX-NEXT: movq %rcx, %rdx
2717 ; VEX-NEXT: sarq $63, %rdx
2718 ; VEX-NEXT: andq %rax, %rdx
2719 ; VEX-NEXT: orq %rcx, %rdx
2720 ; VEX-NEXT: vmovq %rdx, %xmm2
2721 ; VEX-NEXT: vmovshdup {{.*#+}} xmm0 = xmm0[1,1,3,3]
2722 ; VEX-NEXT: vsubss %xmm1, %xmm0, %xmm1
2723 ; VEX-NEXT: vcvttss2si %xmm1, %rax
2724 ; VEX-NEXT: vcvttss2si %xmm0, %rcx
2725 ; VEX-NEXT: movq %rcx, %rdx
2726 ; VEX-NEXT: sarq $63, %rdx
2727 ; VEX-NEXT: andq %rax, %rdx
2728 ; VEX-NEXT: orq %rcx, %rdx
2729 ; VEX-NEXT: vmovq %rdx, %xmm0
2730 ; VEX-NEXT: vpunpcklqdq {{.*#+}} xmm0 = xmm2[0],xmm0[0]
2731 ; VEX-NEXT: retq