diff options
| author | Sergei Barannikov <barannikov88@gmail.com> | 2023-10-10 20:34:20 +0300 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-10 20:34:20 +0300 |
| commit | b9208aca9b295226d657b822c5a09e9f5c1004d9 (patch) | |
| tree | 324d8e2ffeaaea9f9ee7506bac84048a974c5a8f /llvm/test/CodeGen/SPARC | |
| parent | 76f20e9cff222351505ec9dbb83fdb93e64ad691 (diff) | |
[Sparc] Remove duplicate ALU and SETHI instructions (NFCI) (#66851)
There are no 64-bit variants of these ALU / SETHI instructions in V9.
Remove these instruction definitions and add patterns to match DAG nodes
to the generic instructions defined in SparcInstrInfo.td.
This is not strictly NFC because of the changes in
`2011-01-11-FrameAddr.ll` test. The reason is that Sparc delay slot
filler pass handled ADDrr but not ADDXrr, which are now the same
instruction.
Diffstat (limited to 'llvm/test/CodeGen/SPARC')
| -rw-r--r-- | llvm/test/CodeGen/SPARC/2011-01-11-FrameAddr.ll | 7 | ||||
| -rw-r--r-- | llvm/test/CodeGen/SPARC/fp128-split.ll | 18 |
2 files changed, 12 insertions, 13 deletions
diff --git a/llvm/test/CodeGen/SPARC/2011-01-11-FrameAddr.ll b/llvm/test/CodeGen/SPARC/2011-01-11-FrameAddr.ll index 1c55966e6dd0..abd2b867ac3a 100644 --- a/llvm/test/CodeGen/SPARC/2011-01-11-FrameAddr.ll +++ b/llvm/test/CodeGen/SPARC/2011-01-11-FrameAddr.ll @@ -19,10 +19,8 @@ entry: ;SPARC64-LABEL: frameaddr ;SPARC64: save %sp, -128, %sp -;SPARC64: add %fp, 2047, %i0 ;SPARC64: ret -;SPARC64-NOT: restore %g0, %g0, %g0 -;SPARC64: restore +;SPARC64: restore %fp, 2047, %o0 %0 = tail call i8* @llvm.frameaddress(i32 0) ret i8* %0 @@ -47,7 +45,8 @@ entry: ;SPARC64: ldx [%fp+2159], %[[R0:[goli][0-7]]] ;SPARC64: ldx [%[[R0]]+2159], %[[R1:[goli][0-7]]] ;SPARC64: ldx [%[[R1]]+2159], %[[R2:[goli][0-7]]] -;SPARC64: add %[[R2]], 2047, {{.+}} +;SPARC64: ret +;SPARC64: restore %[[R2]], 2047, %o0 %0 = tail call i8* @llvm.frameaddress(i32 3) ret i8* %0 diff --git a/llvm/test/CodeGen/SPARC/fp128-split.ll b/llvm/test/CodeGen/SPARC/fp128-split.ll index 7526706e0cb6..c87cfb932b78 100644 --- a/llvm/test/CodeGen/SPARC/fp128-split.ll +++ b/llvm/test/CodeGen/SPARC/fp128-split.ll @@ -12,11 +12,11 @@ define fp128 @testcase(fp128 %0) { ; CHECK: [[COPY:%[0-9]+]]:qfpregs = COPY $q0 ; CHECK: [[COPY1:%[0-9]+]]:dfpregs = COPY [[COPY]].sub_odd64 ; CHECK: [[ADDri:%[0-9]+]]:i64regs = ADDri %stack.0, 0 - ; CHECK: [[ORXri:%[0-9]+]]:i64regs = ORXri killed [[ADDri]], 8 - ; CHECK: STDFrr [[ORXri]], $g0, killed [[COPY1]] :: (store (s64) into %stack.0 + 8) + ; CHECK: [[ORri:%[0-9]+]]:i64regs = ORri killed [[ADDri]], 8 + ; CHECK: STDFrr [[ORri]], $g0, killed [[COPY1]] :: (store (s64) into %stack.0 + 8) ; CHECK: [[COPY2:%[0-9]+]]:dfpregs = COPY [[COPY]].sub_even64 ; CHECK: STDFri %stack.0, 0, killed [[COPY2]] :: (store (s64) into %stack.0, align 16) - ; CHECK: [[LDXrr:%[0-9]+]]:i64regs = LDXrr [[ORXri]], $g0 :: (load (s64) from %stack.0 + 8) + ; CHECK: [[LDXrr:%[0-9]+]]:i64regs = LDXrr [[ORri]], $g0 :: (load (s64) from %stack.0 + 8) ; CHECK: [[LDXri:%[0-9]+]]:i64regs = LDXri %stack.0, 0 :: (load (s64) from %stack.0, align 16) ; CHECK: [[COPY3:%[0-9]+]]:intregs = COPY [[LDXrr]] ; CHECK: [[COPY4:%[0-9]+]]:intregs = COPY [[LDXri]] @@ -31,19 +31,19 @@ define fp128 @testcase(fp128 %0) { ; CHECK: [[SRLri:%[0-9]+]]:i64regs = SRLri killed [[ADDCCri]], 0 ; CHECK: [[COPY7:%[0-9]+]]:i64regs = COPY [[ADDEri]] ; CHECK: [[SLLXri:%[0-9]+]]:i64regs = SLLXri killed [[COPY7]], 32 - ; CHECK: [[ORXrr:%[0-9]+]]:i64regs = ORXrr killed [[SLLXri]], killed [[SRLri]] + ; CHECK: [[ORrr:%[0-9]+]]:i64regs = ORrr killed [[SLLXri]], killed [[SRLri]] ; CHECK: [[ADDri1:%[0-9]+]]:i64regs = ADDri %stack.1, 0 - ; CHECK: [[ORXri1:%[0-9]+]]:i64regs = ORXri killed [[ADDri1]], 8 - ; CHECK: STXrr [[ORXri1]], $g0, killed [[ORXrr]] :: (store (s64) into %stack.1 + 8, basealign 16) + ; CHECK: [[ORri1:%[0-9]+]]:i64regs = ORri killed [[ADDri1]], 8 + ; CHECK: STXrr [[ORri1]], $g0, killed [[ORrr]] :: (store (s64) into %stack.1 + 8, basealign 16) ; CHECK: [[SRLri1:%[0-9]+]]:i64regs = SRLri killed [[ADDEri1]], 0 ; CHECK: [[COPY8:%[0-9]+]]:i64regs = COPY [[ADDEri2]] ; CHECK: [[SLLXri1:%[0-9]+]]:i64regs = SLLXri killed [[COPY8]], 32 - ; CHECK: [[ORXrr1:%[0-9]+]]:i64regs = ORXrr killed [[SLLXri1]], killed [[SRLri1]] - ; CHECK: STXri %stack.1, 0, killed [[ORXrr1]] :: (store (s64) into %stack.1, align 16) + ; CHECK: [[ORrr1:%[0-9]+]]:i64regs = ORrr killed [[SLLXri1]], killed [[SRLri1]] + ; CHECK: STXri %stack.1, 0, killed [[ORrr1]] :: (store (s64) into %stack.1, align 16) ; CHECK: [[LDDFri:%[0-9]+]]:dfpregs = LDDFri %stack.1, 0 :: (load (s64) from %stack.1, align 16) ; CHECK: [[DEF:%[0-9]+]]:qfpregs = IMPLICIT_DEF ; CHECK: [[INSERT_SUBREG:%[0-9]+]]:qfpregs = INSERT_SUBREG [[DEF]], killed [[LDDFri]], %subreg.sub_even64 - ; CHECK: [[LDDFrr:%[0-9]+]]:dfpregs = LDDFrr [[ORXri1]], $g0 :: (load (s64) from %stack.1 + 8) + ; CHECK: [[LDDFrr:%[0-9]+]]:dfpregs = LDDFrr [[ORri1]], $g0 :: (load (s64) from %stack.1 + 8) ; CHECK: [[INSERT_SUBREG1:%[0-9]+]]:qfpregs = INSERT_SUBREG [[INSERT_SUBREG]], killed [[LDDFrr]], %subreg.sub_odd64 ; CHECK: $q0 = COPY [[INSERT_SUBREG1]] ; CHECK: RETL 8, implicit $q0 |
