brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · d8dde7d Raw
96 lines · plain
1# RUN: llc -march=hexagon -mcpu=hexagonv68 -mattr=+hvxv68,+hvx-length128b \2# RUN: -run-pass hexagon-qfp-optimizer -run-pass machineverifier %s -o - | FileCheck %s3 4# Test that the killed RegState from DefMI operands are removed5# killed RegState should be set for MI operands6# CHECK-LABEL: name: qfpAdd7# CHECK: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG1:([0-9]+)]]8# CHECK-NEXT: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG2:([0-9]+)]]9# CHECK-NEXT: V6_vadd_qf32 killed %[[REG1]], killed %[[REG2]]10# CHECK-NEXT: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG3:([0-9]+)]]11# CHECK-NEXT: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG4:([0-9]+)]]12# CHECK-NEXT: V6_vadd_qf32 killed %[[REG3]], killed %[[REG4]]13 14---15name: qfpAdd16tracksRegLiveness: true17 18body: |19  bb.0:20    liveins: $r0, $r1, $r2, $r321    %0:intregs = COPY $r022    %1:intregs = COPY $r123    %2:intregs = COPY $r224    %3:intregs = COPY $r325    %4:hvxvr = V6_vL32Ub_ai %0:intregs, 026    %5:hvxvr = V6_vL32Ub_ai %1:intregs, 027    %6:hvxvr = V6_vL32Ub_ai %2:intregs, 028    %7:hvxvr = V6_vL32Ub_ai %3:intregs, 029    %8:hvxvr = V6_vconv_sf_qf32 killed %4:hvxvr30    %9:hvxvr = V6_vconv_sf_qf32 killed %5:hvxvr31    %10:hvxvr = V6_vadd_sf %8:hvxvr, %9:hvxvr32    %11:hvxvr = V6_vconv_sf_qf32 killed %6:hvxvr33    %12:hvxvr = V6_vconv_sf_qf32 killed %7:hvxvr34    %13:hvxvr = V6_vadd_sf killed %11:hvxvr, killed %12:hvxvr35...36 37 38# Test that the killed RegState from DefMI operands are removed39# CHECK-LABEL: name: qfpAddMix40# CHECK: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG1:([0-9]+)]]41# CHECK-NEXT: V6_vadd_qf32_mix killed %[[REG1]], %{{[0-9]+}}42# CHECK: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG2:([0-9]+)]]43# CHECK-NEXT: V6_vadd_qf32_mix killed %[[REG2]], %{{[0-9]+}}44 45---46name: qfpAddMix47tracksRegLiveness: true48 49body: |50  bb.0:51    liveins: $r0, $r1, $r252    %0:intregs = COPY $r053    %1:intregs = COPY $r154    %2:intregs = COPY $r255    %3:hvxvr = V6_vL32Ub_ai %0:intregs, 056    %4:hvxvr = V6_vL32Ub_ai %1:intregs, 057    %5:hvxvr = V6_vL32Ub_ai %2:intregs, 058    %6:hvxvr = V6_vmpy_qf32_sf %4, %559    %7:hvxvr = V6_vconv_sf_qf32 killed %6:hvxvr60    %8:hvxvr = V6_vadd_sf %3:hvxvr, %7:hvxvr61    %9:hvxvr = V6_vmpy_qf32_sf %4, %562    %10:hvxvr = V6_vconv_sf_qf32 killed %9:hvxvr63    %11:hvxvr = V6_vadd_sf %3:hvxvr, killed %10:hvxvr64...65 66 67# Test that we do generate V6_vsub_qf32_mix for the below test.68# V6_vsub_qf32_mix only allowes qf32 as first operand. In the test qf3269# is passed as first operand. So, V6_vsub_qf32_mix must be generated.70# CHECK-LABEL: name: qfpAddSwapMix71# CHECK: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG1:([0-9]+)]]72# CHECK-NEXT: V6_vadd_qf32_mix killed %[[REG1]], %{{[0-9]+}}73# CHECK: %{{[0-9]+}}:hvxvr = V6_vconv_sf_qf32 %[[REG2:([0-9]+)]]74# CHECK-NEXT: V6_vadd_qf32_mix killed %[[REG2]], %{{[0-9]+}}75 76---77name: qfpAddSwapMix78tracksRegLiveness: true79 80body: |81  bb.0:82    liveins: $r0, $r1, $r283    %0:intregs = COPY $r084    %1:intregs = COPY $r185    %2:intregs = COPY $r286    %3:hvxvr = V6_vL32Ub_ai %0:intregs, 087    %4:hvxvr = V6_vL32Ub_ai %1:intregs, 088    %5:hvxvr = V6_vL32Ub_ai %2:intregs, 089    %6:hvxvr = V6_vmpy_qf32_sf %4, %590    %7:hvxvr = V6_vconv_sf_qf32 killed %6:hvxvr91    %8:hvxvr = V6_vadd_sf %7:hvxvr, %3:hvxvr92    %9:hvxvr = V6_vmpy_qf32_sf %4, %593    %10:hvxvr = V6_vconv_sf_qf32 killed %9:hvxvr94    %11:hvxvr = V6_vadd_sf killed %10:hvxvr, %3:hvxvr95...96