1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc -verify-machineinstrs -mtriple=x86_64-unknown-unknown -mcpu=generic -mattr=+avx512f -fast-isel --fast-isel-abort=1 < %s | FileCheck %s --check-prefix=ALL --check-prefix=AVX 3 4 5define double @long_to_double_rr(i64 %a) { 6; ALL-LABEL: long_to_double_rr: 7; ALL: # %bb.0: # %entry 8; ALL-NEXT: vcvtusi2sdq %rdi, %xmm0, %xmm0 9; ALL-NEXT: retq 10entry: 11 %0 = uitofp i64 %a to double 12 ret double %0 13} 14 15define double @long_to_double_rm(i64* %a) { 16; ALL-LABEL: long_to_double_rm: 17; ALL: # %bb.0: # %entry 18; ALL-NEXT: movq (%rdi), %rax 19; ALL-NEXT: vcvtusi2sdq %rax, %xmm0, %xmm0 20; ALL-NEXT: retq 21entry: 22 %0 = load i64, i64* %a 23 %1 = uitofp i64 %0 to double 24 ret double %1 25} 26 27define double @long_to_double_rm_optsize(i64* %a) optsize { 28; ALL-LABEL: long_to_double_rm_optsize: 29; ALL: # %bb.0: # %entry 30; ALL-NEXT: vcvtusi2sdq (%rdi), %xmm0, %xmm0 31; ALL-NEXT: retq 32entry: 33 %0 = load i64, i64* %a 34 %1 = uitofp i64 %0 to double 35 ret double %1 36} 37 38define float @long_to_float_rr(i64 %a) { 39; ALL-LABEL: long_to_float_rr: 40; ALL: # %bb.0: # %entry 41; ALL-NEXT: vcvtusi2ssq %rdi, %xmm0, %xmm0 42; ALL-NEXT: retq 43entry: 44 %0 = uitofp i64 %a to float 45 ret float %0 46} 47 48define float @long_to_float_rm(i64* %a) { 49; ALL-LABEL: long_to_float_rm: 50; ALL: # %bb.0: # %entry 51; ALL-NEXT: movq (%rdi), %rax 52; ALL-NEXT: vcvtusi2ssq %rax, %xmm0, %xmm0 53; ALL-NEXT: retq 54entry: 55 %0 = load i64, i64* %a 56 %1 = uitofp i64 %0 to float 57 ret float %1 58} 59 60define float @long_to_float_rm_optsize(i64* %a) optsize { 61; ALL-LABEL: long_to_float_rm_optsize: 62; ALL: # %bb.0: # %entry 63; ALL-NEXT: vcvtusi2ssq (%rdi), %xmm0, %xmm0 64; ALL-NEXT: retq 65entry: 66 %0 = load i64, i64* %a 67 %1 = uitofp i64 %0 to float 68 ret float %1 69} 70