| # RUN: llc -march=hexagon -mcpu=hexagonv69 -mattr=+hvxv69,+hvx-length128b -run-pass hexagon-qfp-optimizer %s -o - | FileCheck %s |
| |
| # CHECK: V6_vshuffvdd |
| # CHECK: V6_vadd_sf |
| # CHECK: V6_vadd_qf32_mix{{.*}}vsub_lo |
| # CHECK: V6_vadd_qf32_mix{{.*}}vsub_hi |
| |
| --- |
| name: qfp_subreg_fix |
| alignment: 16 |
| tracksRegLiveness: true |
| |
| body: | |
| bb.0: |
| %10:intregs = IMPLICIT_DEF |
| %9:hvxvr = V6_vL32Ub_ai %10, 0 :: (load (s1024) from `ptr undef`, align 4) |
| %11:intregs = A2_tfrsi 15360 |
| %12:hvxvr = V6_lvsplath %11 |
| %13:hvxwr = V6_vmpy_qf32_hf %9, %12 |
| %15:hvxvr = V6_vconv_sf_qf32 %13.vsub_lo |
| %17:hvxvr = V6_vconv_sf_qf32 %13.vsub_hi |
| %18:intregslow8 = A2_tfrsi -4 |
| %19:hvxwr = V6_vshuffvdd %17, %15, %18 |
| %21:hvxvr = V6_vadd_sf %19.vsub_hi, %19.vsub_hi |
| %22:hvxvr = V6_vconv_sf_qf32 %21 |
| %24:hvxvr = V6_vadd_sf %19.vsub_lo, %19.vsub_lo |
| %25:hvxvr = V6_vconv_sf_qf32 %24 |
| %26:hvxvr = V6_vadd_sf %25, %19.vsub_lo |
| %27:hvxvr = V6_vconv_sf_qf32 %26 |
| %28:hvxvr = V6_vadd_sf %22, %19.vsub_hi |
| %29:hvxvr = V6_vconv_sf_qf32 %28 |
| |
| ... |