Skip to content

Commit 30371df

Browse files
committed
[ARM] More unpredictable VCVT instructions.
These extra vcvt instructions were missed from 74ca67c because they live in a different Domain, but should be treated in the same way. Differential Revision: https://reviews.llvm.org/D83204
1 parent cb59267 commit 30371df

File tree

3 files changed

+6
-4
lines changed

3 files changed

+6
-4
lines changed

llvm/lib/Target/ARM/ARMInstrVFP.td

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1551,6 +1551,8 @@ class AVConv1InsS_Encode<bits<5> opcod1, bits<2> opcod2, bits<4> opcod3,
15511551
let Inst{5} = Sm{0};
15521552
let Inst{15-12} = Sd{4-1};
15531553
let Inst{22} = Sd{0};
1554+
1555+
let hasSideEffects = 0;
15541556
}
15551557

15561558
class AVConv1IsH_Encode<bits<5> opcod1, bits<2> opcod2, bits<4> opcod3,

llvm/test/CodeGen/Thumb2/mve-vcvt.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,8 @@ define arm_aapcs_vfpcc <4 x i32> @foo_int32_float(<4 x float> %src) {
4545
; CHECK-MVE: @ %bb.0: @ %entry
4646
; CHECK-MVE-NEXT: vcvt.s32.f32 s4, s0
4747
; CHECK-MVE-NEXT: vcvt.s32.f32 s6, s1
48-
; CHECK-MVE-NEXT: vcvt.s32.f32 s8, s3
4948
; CHECK-MVE-NEXT: vcvt.s32.f32 s10, s2
49+
; CHECK-MVE-NEXT: vcvt.s32.f32 s8, s3
5050
; CHECK-MVE-NEXT: vmov r0, s4
5151
; CHECK-MVE-NEXT: vmov.32 q0[0], r0
5252
; CHECK-MVE-NEXT: vmov r0, s6
@@ -71,8 +71,8 @@ define arm_aapcs_vfpcc <4 x i32> @foo_uint32_float(<4 x float> %src) {
7171
; CHECK-MVE: @ %bb.0: @ %entry
7272
; CHECK-MVE-NEXT: vcvt.u32.f32 s4, s0
7373
; CHECK-MVE-NEXT: vcvt.u32.f32 s6, s1
74-
; CHECK-MVE-NEXT: vcvt.u32.f32 s8, s3
7574
; CHECK-MVE-NEXT: vcvt.u32.f32 s10, s2
75+
; CHECK-MVE-NEXT: vcvt.u32.f32 s8, s3
7676
; CHECK-MVE-NEXT: vmov r0, s4
7777
; CHECK-MVE-NEXT: vmov.32 q0[0], r0
7878
; CHECK-MVE-NEXT: vmov r0, s6

llvm/unittests/Target/ARM/MachineInstrTest.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1103,8 +1103,8 @@ TEST(MachineInstr, HasSideEffects) {
11031103

11041104
for (unsigned Op = 0; Op < ARM::INSTRUCTION_LIST_END; ++Op) {
11051105
const MCInstrDesc &Desc = TII->get(Op);
1106-
if ((Desc.TSFlags & ARMII::DomainMask) != ARMII::DomainMVE &&
1107-
(Desc.TSFlags & ARMII::DomainMask) != ARMII::DomainVFP)
1106+
if ((Desc.TSFlags &
1107+
(ARMII::DomainMVE | ARMII::DomainVFP | ARMII::DomainNEONA8)) == 0)
11081108
continue;
11091109
if (UnpredictableOpcodes.count(Op))
11101110
continue;

0 commit comments

Comments
 (0)