[llvm] r323291 - [GISel]: Remove redundant copies at the end of ISel
Aditya Nandakumar via llvm-commits
llvm-commits at lists.llvm.org
Tue Jan 23 17:35:26 PST 2018
Author: aditya_nandakumar
Date: Tue Jan 23 17:35:26 2018
New Revision: 323291
URL: http://llvm.org/viewvc/llvm-project?rev=323291&view=rev
Log:
[GISel]: Remove redundant copies at the end of ISel
https://reviews.llvm.org/D42402
A lot of these copies are useless (copies b/w VRegs having the same
regclass) and should be cleaned up.
Modified:
llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast-bigendian.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-br.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-store.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-trunc.mir
llvm/trunk/test/CodeGen/AArch64/GlobalISel/select.mir
llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir
llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir
llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext.mir
llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec256.mir
llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec512.mir
llvm/trunk/test/CodeGen/X86/GlobalISel/select-trunc.mir
Modified: llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp (original)
+++ llvm/trunk/lib/CodeGen/GlobalISel/InstructionSelect.cpp Tue Jan 23 17:35:26 2018
@@ -159,6 +159,38 @@ bool InstructionSelect::runOnMachineFunc
const TargetRegisterInfo &TRI = *MF.getSubtarget().getRegisterInfo();
+ for (MachineBasicBlock &MBB : MF) {
+ if (MBB.empty())
+ continue;
+
+ // Try to find redundant copies b/w vregs of the same register class.
+ bool ReachedBegin = false;
+ for (auto MII = std::prev(MBB.end()), Begin = MBB.begin(); !ReachedBegin;) {
+ // Select this instruction.
+ MachineInstr &MI = *MII;
+
+ // And have our iterator point to the next instruction, if there is one.
+ if (MII == Begin)
+ ReachedBegin = true;
+ else
+ --MII;
+ if (MI.getOpcode() != TargetOpcode::COPY)
+ continue;
+ unsigned SrcReg = MI.getOperand(1).getReg();
+ unsigned DstReg = MI.getOperand(0).getReg();
+ if (TargetRegisterInfo::isVirtualRegister(SrcReg) &&
+ TargetRegisterInfo::isVirtualRegister(DstReg)) {
+ MachineRegisterInfo &MRI = MF.getRegInfo();
+ auto SrcRC = MRI.getRegClass(SrcReg);
+ auto DstRC = MRI.getRegClass(DstReg);
+ if (SrcRC == DstRC) {
+ MRI.replaceRegWith(DstReg, SrcReg);
+ MI.eraseFromParentAndMarkDBGValuesForRemoval();
+ }
+ }
+ }
+ }
+
// Now that selection is complete, there are no more generic vregs. Verify
// that the size of the now-constrained vreg is unchanged and that it has a
// register class.
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast-bigendian.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast-bigendian.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast-bigendian.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast-bigendian.mir Tue Jan 23 17:35:26 2018
@@ -10,8 +10,7 @@ body: |
; CHECK-LABEL: name: bitcast_v2f32_to_s64
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY %x0
- ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]
- ; CHECK: [[REV:%[0-9]+]]:fpr64 = REV64v2i32 [[COPY1]]
+ ; CHECK: [[REV:%[0-9]+]]:fpr64 = REV64v2i32 [[COPY]]
; CHECK: %x0 = COPY [[REV]]
%0:fpr(<2 x s32>) = COPY %x0
%1:fpr(s64) = G_BITCAST %0
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-bitcast.mir Tue Jan 23 17:35:26 2018
@@ -30,8 +30,7 @@ body: |
; CHECK-LABEL: name: bitcast_s32_gpr
; CHECK: [[COPY:%[0-9]+]]:gpr32all = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32all = COPY [[COPY]]
- ; CHECK: %w0 = COPY [[COPY1]]
+ ; CHECK: %w0 = COPY [[COPY]]
%0(s32) = COPY %w0
%1(s32) = G_BITCAST %0
%w0 = COPY %1(s32)
@@ -52,8 +51,7 @@ body: |
; CHECK-LABEL: name: bitcast_s32_fpr
; CHECK: [[COPY:%[0-9]+]]:fpr32 = COPY %s0
- ; CHECK: [[COPY1:%[0-9]+]]:fpr32 = COPY [[COPY]]
- ; CHECK: %s0 = COPY [[COPY1]]
+ ; CHECK: %s0 = COPY [[COPY]]
%0(s32) = COPY %s0
%1(s32) = G_BITCAST %0
%s0 = COPY %1(s32)
@@ -118,8 +116,7 @@ body: |
; CHECK-LABEL: name: bitcast_s64_gpr
; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY %x0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr64all = COPY [[COPY]]
- ; CHECK: %x0 = COPY [[COPY1]]
+ ; CHECK: %x0 = COPY [[COPY]]
%0(s64) = COPY %x0
%1(s64) = G_BITCAST %0
%x0 = COPY %1(s64)
@@ -140,8 +137,7 @@ body: |
; CHECK-LABEL: name: bitcast_s64_fpr
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY %d0
- ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]
- ; CHECK: %d0 = COPY [[COPY1]]
+ ; CHECK: %d0 = COPY [[COPY]]
%0(s64) = COPY %d0
%1(s64) = G_BITCAST %0
%d0 = COPY %1(s64)
@@ -205,8 +201,7 @@ body: |
; CHECK-LABEL: name: bitcast_s64_v2f32_fpr
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY %d0
- ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]
- ; CHECK: %x0 = COPY [[COPY1]]
+ ; CHECK: %x0 = COPY [[COPY]]
%0(s64) = COPY %d0
%1(<2 x s32>) = G_BITCAST %0
%x0 = COPY %1(<2 x s32>)
@@ -227,8 +222,7 @@ body: |
; CHECK-LABEL: name: bitcast_s64_v8i8_fpr
; CHECK: [[COPY:%[0-9]+]]:fpr64 = COPY %d0
- ; CHECK: [[COPY1:%[0-9]+]]:fpr64 = COPY [[COPY]]
- ; CHECK: %x0 = COPY [[COPY1]]
+ ; CHECK: %x0 = COPY [[COPY]]
%0(s64) = COPY %d0
%1(<8 x s8>) = G_BITCAST %0
%x0 = COPY %1(<8 x s8>)
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-br.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-br.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-br.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-br.mir Tue Jan 23 17:35:26 2018
@@ -37,7 +37,7 @@ registers:
# CHECK: body:
# CHECK: bb.0:
-# CHECK: TBNZW %0, 0, %bb.1
+# CHECK: TBNZW %1, 0, %bb.1
# CHECK: B %bb.0
body: |
bb.0:
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ext.mir Tue Jan 23 17:35:26 2018
@@ -34,8 +34,7 @@ body: |
; CHECK-LABEL: name: anyext_s64_from_s32
; CHECK: [[COPY:%[0-9]+]]:gpr32all = COPY %w0
; CHECK: [[SUBREG_TO_REG:%[0-9]+]]:gpr64all = SUBREG_TO_REG 0, [[COPY]], %subreg.sub_32
- ; CHECK: [[COPY1:%[0-9]+]]:gpr64all = COPY [[SUBREG_TO_REG]]
- ; CHECK: %x0 = COPY [[COPY1]]
+ ; CHECK: %x0 = COPY [[SUBREG_TO_REG]]
%0(s32) = COPY %w0
%1(s64) = G_ANYEXT %0
%x0 = COPY %1(s64)
@@ -56,8 +55,7 @@ body: |
; CHECK-LABEL: name: anyext_s32_from_s8
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
+ ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY]]
; CHECK: %w0 = COPY [[COPY2]]
%2:gpr(s32) = COPY %w0
%0(s8) = G_TRUNC %2
@@ -103,8 +101,7 @@ body: |
; CHECK-LABEL: name: zext_s32_from_s16
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY1]], 0, 15
+ ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY]], 0, 15
; CHECK: %w0 = COPY [[UBFMWri]]
%2:gpr(s32) = COPY %w0
%0(s16) = G_TRUNC %2
@@ -127,8 +124,7 @@ body: |
; CHECK-LABEL: name: zext_s32_from_s8
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY1]], 0, 15
+ ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY]], 0, 15
; CHECK: %w0 = COPY [[UBFMWri]]
%2:gpr(s32) = COPY %w0
%0(s16) = G_TRUNC %2
@@ -151,8 +147,7 @@ body: |
; CHECK-LABEL: name: zext_s16_from_s8
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY1]], 0, 7
+ ; CHECK: [[UBFMWri:%[0-9]+]]:gpr32 = UBFMWri [[COPY]], 0, 7
; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[UBFMWri]]
; CHECK: %w0 = COPY [[COPY2]]
%2:gpr(s32) = COPY %w0
@@ -200,8 +195,7 @@ body: |
; CHECK-LABEL: name: sext_s32_from_s16
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[SBFMWri:%[0-9]+]]:gpr32 = SBFMWri [[COPY1]], 0, 15
+ ; CHECK: [[SBFMWri:%[0-9]+]]:gpr32 = SBFMWri [[COPY]], 0, 15
; CHECK: %w0 = COPY [[SBFMWri]]
%2:gpr(s32) = COPY %w0
%0(s16) = G_TRUNC %2
@@ -224,8 +218,7 @@ body: |
; CHECK-LABEL: name: sext_s32_from_s8
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[SBFMWri:%[0-9]+]]:gpr32 = SBFMWri [[COPY1]], 0, 7
+ ; CHECK: [[SBFMWri:%[0-9]+]]:gpr32 = SBFMWri [[COPY]], 0, 7
; CHECK: %w0 = COPY [[SBFMWri]]
%2:gpr(s32) = COPY %w0
%0(s8) = G_TRUNC %2
@@ -248,8 +241,7 @@ body: |
; CHECK-LABEL: name: sext_s16_from_s8
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[SBFMWri:%[0-9]+]]:gpr32 = SBFMWri [[COPY1]], 0, 7
+ ; CHECK: [[SBFMWri:%[0-9]+]]:gpr32 = SBFMWri [[COPY]], 0, 7
; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[SBFMWri]]
; CHECK: %w0 = COPY [[COPY2]]
%2:gpr(s32) = COPY %w0
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-int-ptr-casts.mir Tue Jan 23 17:35:26 2018
@@ -25,8 +25,7 @@ body: |
liveins: %x0
; CHECK-LABEL: name: inttoptr_p0_s64
; CHECK: [[COPY:%[0-9]+]]:gpr64all = COPY %x0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr64all = COPY [[COPY]]
- ; CHECK: %x0 = COPY [[COPY1]]
+ ; CHECK: %x0 = COPY [[COPY]]
%0(s64) = COPY %x0
%1(p0) = G_INTTOPTR %0
%x0 = COPY %1(p0)
@@ -45,8 +44,7 @@ body: |
liveins: %x0
; CHECK-LABEL: name: ptrtoint_s64_p0
; CHECK: [[COPY:%[0-9]+]]:gpr64 = COPY %x0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr64 = COPY [[COPY]]
- ; CHECK: %x0 = COPY [[COPY1]]
+ ; CHECK: %x0 = COPY [[COPY]]
%0(p0) = COPY %x0
%1(s64) = G_PTRTOINT %0
%x0 = COPY %1(s64)
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-store.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-store.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-store.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-store.mir Tue Jan 23 17:35:26 2018
@@ -93,8 +93,7 @@ body: |
; CHECK-LABEL: name: store_s16_gpr
; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY %x0
; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY %w1
- ; CHECK: [[COPY2:%[0-9]+]]:gpr32 = COPY [[COPY1]]
- ; CHECK: STRHHui [[COPY2]], [[COPY]], 0 :: (store 2 into %ir.addr)
+ ; CHECK: STRHHui [[COPY1]], [[COPY]], 0 :: (store 2 into %ir.addr)
%0(p0) = COPY %x0
%2:gpr(s32) = COPY %w1
%1(s16) = G_TRUNC %2
@@ -118,8 +117,7 @@ body: |
; CHECK-LABEL: name: store_s8_gpr
; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY %x0
; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY %w1
- ; CHECK: [[COPY2:%[0-9]+]]:gpr32 = COPY [[COPY1]]
- ; CHECK: STRBBui [[COPY2]], [[COPY]], 0 :: (store 1 into %ir.addr)
+ ; CHECK: STRBBui [[COPY1]], [[COPY]], 0 :: (store 1 into %ir.addr)
%0(p0) = COPY %x0
%2:gpr(s32) = COPY %w1
%1(s8) = G_TRUNC %2
@@ -265,8 +263,7 @@ body: |
; CHECK-LABEL: name: store_gep_64_s16_gpr
; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY %x0
; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY %w1
- ; CHECK: [[COPY2:%[0-9]+]]:gpr32 = COPY [[COPY1]]
- ; CHECK: STRHHui [[COPY2]], [[COPY]], 32 :: (store 2 into %ir.addr)
+ ; CHECK: STRHHui [[COPY1]], [[COPY]], 32 :: (store 2 into %ir.addr)
%0(p0) = COPY %x0
%4:gpr(s32) = COPY %w1
%1(s16) = G_TRUNC %4
@@ -293,8 +290,7 @@ body: |
; CHECK-LABEL: name: store_gep_1_s8_gpr
; CHECK: [[COPY:%[0-9]+]]:gpr64sp = COPY %x0
; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY %w1
- ; CHECK: [[COPY2:%[0-9]+]]:gpr32 = COPY [[COPY1]]
- ; CHECK: STRBBui [[COPY2]], [[COPY]], 1 :: (store 1 into %ir.addr)
+ ; CHECK: STRBBui [[COPY1]], [[COPY]], 1 :: (store 1 into %ir.addr)
%0(p0) = COPY %x0
%4:gpr(s32) = COPY %w1
%1(s8) = G_TRUNC %4
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-trunc.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-trunc.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-trunc.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select-trunc.mir Tue Jan 23 17:35:26 2018
@@ -70,8 +70,7 @@ body: |
; CHECK-LABEL: name: trunc_s1_s32
; CHECK: [[COPY:%[0-9]+]]:gpr32 = COPY %w0
- ; CHECK: [[COPY1:%[0-9]+]]:gpr32 = COPY [[COPY]]
- ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY1]]
+ ; CHECK: [[COPY2:%[0-9]+]]:gpr32all = COPY [[COPY]]
; CHECK: %w0 = COPY [[COPY2]]
%0(s32) = COPY %w0
%1(s1) = G_TRUNC %0
Modified: llvm/trunk/test/CodeGen/AArch64/GlobalISel/select.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/GlobalISel/select.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/GlobalISel/select.mir (original)
+++ llvm/trunk/test/CodeGen/AArch64/GlobalISel/select.mir Tue Jan 23 17:35:26 2018
@@ -304,11 +304,11 @@ registers:
- { id: 9, class: gpr }
# CHECK: body:
-# CHECK: %wzr = ANDSWri %0, 0, implicit-def %nzcv
+# CHECK: %wzr = ANDSWri %10, 0, implicit-def %nzcv
# CHECK: %3:gpr32 = CSELWr %1, %2, 1, implicit %nzcv
-# CHECK: %wzr = ANDSWri %0, 0, implicit-def %nzcv
+# CHECK: %wzr = ANDSWri %10, 0, implicit-def %nzcv
# CHECK: %6:gpr64 = CSELXr %4, %5, 1, implicit %nzcv
-# CHECK: %wzr = ANDSWri %0, 0, implicit-def %nzcv
+# CHECK: %wzr = ANDSWri %10, 0, implicit-def %nzcv
# CHECK: %9:gpr64 = CSELXr %7, %8, 1, implicit %nzcv
body: |
bb.0:
Modified: llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir (original)
+++ llvm/trunk/test/CodeGen/ARM/GlobalISel/arm-instruction-select.mir Tue Jan 23 17:35:26 2018
@@ -97,10 +97,9 @@ body: |
; CHECK: [[VREG:%[0-9]+]]:gpr = COPY %r0
%1(s1) = G_TRUNC %0(s32)
- ; CHECK: [[VREGTRUNC:%[0-9]+]]:gpr = COPY [[VREG]]
%2(s32) = G_ZEXT %1(s1)
- ; CHECK: [[VREGEXT:%[0-9]+]]:gpr = ANDri [[VREGTRUNC]], 1, 14, %noreg, %noreg
+ ; CHECK: [[VREGEXT:%[0-9]+]]:gpr = ANDri [[VREG]], 1, 14, %noreg, %noreg
%r0 = COPY %2(s32)
; CHECK: %r0 = COPY [[VREGEXT]]
@@ -127,10 +126,9 @@ body: |
; CHECK: [[VREG:%[0-9]+]]:gpr = COPY %r0
%1(s1) = G_TRUNC %0(s32)
- ; CHECK: [[VREGTRUNC:%[0-9]+]]:gpr = COPY [[VREG]]
%2(s32) = G_SEXT %1(s1)
- ; CHECK: [[VREGAND:%[0-9]+]]:gpr = ANDri [[VREGTRUNC]], 1, 14, %noreg, %noreg
+ ; CHECK: [[VREGAND:%[0-9]+]]:gpr = ANDri [[VREG]], 1, 14, %noreg, %noreg
; CHECK: [[VREGEXT:%[0-9]+]]:gpr = RSBri [[VREGAND]], 0, 14, %noreg, %noreg
%r0 = COPY %2(s32)
@@ -218,13 +216,11 @@ body: |
; CHECK: [[VREG:%[0-9]+]]:gpr = COPY %r0
%1(s8) = G_TRUNC %0(s32)
- ; CHECK: [[VREGTRUNC:%[0-9]+]]:gpr = COPY [[VREG]]
%2(s32) = G_ANYEXT %1(s8)
- ; CHECK: [[VREGEXT:%[0-9]+]]:gpr = COPY [[VREGTRUNC]]
%r0 = COPY %2(s32)
- ; CHECK: %r0 = COPY [[VREGEXT]]
+ ; CHECK: %r0 = COPY [[VREG]]
BX_RET 14, %noreg, implicit %r0
; CHECK: BX_RET 14, %noreg, implicit %r0
@@ -248,13 +244,11 @@ body: |
; CHECK: [[VREG:%[0-9]+]]:gpr = COPY %r0
%1(s16) = G_TRUNC %0(s32)
- ; CHECK: [[VREGTRUNC:%[0-9]+]]:gpr = COPY [[VREG]]
%2(s32) = G_ANYEXT %1(s16)
- ; CHECK: [[VREGEXT:%[0-9]+]]:gpr = COPY [[VREGTRUNC]]
%r0 = COPY %2(s32)
- ; CHECK: %r0 = COPY [[VREGEXT]]
+ ; CHECK: %r0 = COPY [[VREG]]
BX_RET 14, %noreg, implicit %r0
; CHECK: BX_RET 14, %noreg, implicit %r0
@@ -1220,7 +1214,7 @@ body: |
; CHECK: STRBi12 %[[I8]], %[[P]], 0, 14, %noreg
G_STORE %2(s16), %0(p0) :: (store 2)
- ; CHECK: STRH %[[I16]], %[[P]], %noreg, 0, 14, %noreg
+ ; CHECK: STRH %[[I32]], %[[P]], %noreg, 0, 14, %noreg
G_STORE %3(s32), %0(p0) :: (store 4)
; CHECK: STRi12 %[[I32]], %[[P]], 0, 14, %noreg
@@ -1348,10 +1342,9 @@ body: |
%0(s32) = COPY %r0
%1(p0) = G_INTTOPTR %0(s32)
; CHECK: [[INT:%[0-9]+]]:gpr = COPY %r0
- ; CHECK: [[PTR:%[0-9]+]]:gpr = COPY [[INT]]
%r0 = COPY %1(p0)
- ; CHECK: %r0 = COPY [[PTR]]
+ ; CHECK: %r0 = COPY [[INT]]
BX_RET 14, %noreg, implicit %r0
...
@@ -1372,10 +1365,9 @@ body: |
%0(p0) = COPY %r0
%1(s32) = G_PTRTOINT %0(p0)
; CHECK: [[PTR:%[0-9]+]]:gpr = COPY %r0
- ; CHECK: [[INT:%[0-9]+]]:gpr = COPY [[PTR]]
%r0 = COPY %1(s32)
- ; CHECK: %r0 = COPY [[INT]]
+ ; CHECK: %r0 = COPY [[PTR]]
BX_RET 14, %noreg, implicit %r0
...
@@ -1402,10 +1394,9 @@ body: |
; CHECK: [[VREGY:%[0-9]+]]:gpr = COPY %r1
%2(s1) = G_TRUNC %1(s32)
- ; CHECK: [[VREGC:%[0-9]+]]:gpr = COPY [[VREGY]]
%3(s32) = G_SELECT %2(s1), %0, %1
- ; CHECK: CMPri [[VREGC]], 0, 14, %noreg, implicit-def %cpsr
+ ; CHECK: CMPri [[VREGY]], 0, 14, %noreg, implicit-def %cpsr
; CHECK: [[RES:%[0-9]+]]:gpr = MOVCCr [[VREGX]], [[VREGY]], 0, %cpsr
%r0 = COPY %3(s32)
@@ -1441,10 +1432,9 @@ body: |
; CHECK: [[VREGC:%[0-9]+]]:gpr = COPY %r2
%3(s1) = G_TRUNC %2(s32)
- ; CHECK: [[VREGD:%[0-9]+]]:gpr = COPY [[VREGC]]
%4(p0) = G_SELECT %3(s1), %0, %1
- ; CHECK: CMPri [[VREGD]], 0, 14, %noreg, implicit-def %cpsr
+ ; CHECK: CMPri [[VREGC]], 0, 14, %noreg, implicit-def %cpsr
; CHECK: [[RES:%[0-9]+]]:gpr = MOVCCr [[VREGX]], [[VREGY]], 0, %cpsr
%r0 = COPY %4(p0)
@@ -1472,10 +1462,9 @@ body: |
%0(s32) = COPY %r0
; CHECK: [[COND32:%[0-9]+]]:gpr = COPY %r0
%1(s1) = G_TRUNC %0(s32)
- ; CHECK: [[COND:%[0-9]+]]:gpr = COPY [[COND32]]
G_BRCOND %1(s1), %bb.1
- ; CHECK: TSTri [[COND]], 1, 14, %noreg, implicit-def %cpsr
+ ; CHECK: TSTri [[COND32]], 1, 14, %noreg, implicit-def %cpsr
; CHECK: Bcc %bb.1, 1, %cpsr
G_BR %bb.2
; CHECK: B %bb.2
Modified: llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir (original)
+++ llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext-x86-64.mir Tue Jan 23 17:35:26 2018
@@ -38,8 +38,7 @@ body: |
; ALL-LABEL: name: test_zext_i1
; ALL: [[COPY:%[0-9]+]]:gr8 = COPY %dil
- ; ALL: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]]
- ; ALL: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, [[COPY1]], %subreg.sub_8bit
+ ; ALL: [[SUBREG_TO_REG:%[0-9]+]]:gr64 = SUBREG_TO_REG 0, [[COPY]], %subreg.sub_8bit
; ALL: [[AND64ri8_:%[0-9]+]]:gr64 = AND64ri8 [[SUBREG_TO_REG]], 1, implicit-def %eflags
; ALL: %rax = COPY [[AND64ri8_]]
; ALL: RET 0, implicit %rax
Modified: llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext.mir (original)
+++ llvm/trunk/test/CodeGen/X86/GlobalISel/select-ext.mir Tue Jan 23 17:35:26 2018
@@ -285,8 +285,7 @@ registers:
# X32: %0:gr32_abcd = COPY %edi
# X64: %0:gr32 = COPY %edi
# ALL-NEXT: %1:gr8 = COPY %0.sub_8bit
-# ALL-NEXT: %2:gr8 = COPY %1
-# ALL-NEXT: %al = COPY %2
+# ALL-NEXT: %al = COPY %1
# ALL-NEXT: RET 0, implicit %al
body: |
bb.1 (%ir-block.0):
Modified: llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec256.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec256.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec256.mir (original)
+++ llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec256.mir Tue Jan 23 17:35:26 2018
@@ -24,15 +24,13 @@ body: |
; AVX: [[DEF:%[0-9]+]]:vr128 = IMPLICIT_DEF
; AVX: undef %2.sub_xmm:vr256 = COPY [[DEF]]
; AVX: [[VINSERTF128rr:%[0-9]+]]:vr256 = VINSERTF128rr %2, [[DEF]], 1
- ; AVX: [[COPY:%[0-9]+]]:vr256 = COPY [[VINSERTF128rr]]
- ; AVX: %ymm0 = COPY [[COPY]]
+ ; AVX: %ymm0 = COPY [[VINSERTF128rr]]
; AVX: RET 0, implicit %ymm0
; AVX512VL-LABEL: name: test_merge
; AVX512VL: [[DEF:%[0-9]+]]:vr128x = IMPLICIT_DEF
; AVX512VL: undef %2.sub_xmm:vr256x = COPY [[DEF]]
; AVX512VL: [[VINSERTF32x4Z256rr:%[0-9]+]]:vr256x = VINSERTF32x4Z256rr %2, [[DEF]], 1
- ; AVX512VL: [[COPY:%[0-9]+]]:vr256x = COPY [[VINSERTF32x4Z256rr]]
- ; AVX512VL: %ymm0 = COPY [[COPY]]
+ ; AVX512VL: %ymm0 = COPY [[VINSERTF32x4Z256rr]]
; AVX512VL: RET 0, implicit %ymm0
%0(<4 x s32>) = IMPLICIT_DEF
%1(<8 x s32>) = G_MERGE_VALUES %0(<4 x s32>), %0(<4 x s32>)
Modified: llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec512.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec512.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec512.mir (original)
+++ llvm/trunk/test/CodeGen/X86/GlobalISel/select-merge-vec512.mir Tue Jan 23 17:35:26 2018
@@ -27,8 +27,7 @@ body: |
; ALL: [[VINSERTF32x4Zrr:%[0-9]+]]:vr512 = VINSERTF32x4Zrr %2, [[DEF]], 1
; ALL: [[VINSERTF32x4Zrr1:%[0-9]+]]:vr512 = VINSERTF32x4Zrr [[VINSERTF32x4Zrr]], [[DEF]], 2
; ALL: [[VINSERTF32x4Zrr2:%[0-9]+]]:vr512 = VINSERTF32x4Zrr [[VINSERTF32x4Zrr1]], [[DEF]], 3
- ; ALL: [[COPY:%[0-9]+]]:vr512 = COPY [[VINSERTF32x4Zrr2]]
- ; ALL: %zmm0 = COPY [[COPY]]
+ ; ALL: %zmm0 = COPY [[VINSERTF32x4Zrr2]]
; ALL: RET 0, implicit %zmm0
%0(<4 x s32>) = IMPLICIT_DEF
%1(<16 x s32>) = G_MERGE_VALUES %0(<4 x s32>), %0(<4 x s32>), %0(<4 x s32>), %0(<4 x s32>)
@@ -51,8 +50,7 @@ body: |
; ALL: [[DEF:%[0-9]+]]:vr256x = IMPLICIT_DEF
; ALL: undef %2.sub_ymm:vr512 = COPY [[DEF]]
; ALL: [[VINSERTF64x4Zrr:%[0-9]+]]:vr512 = VINSERTF64x4Zrr %2, [[DEF]], 1
- ; ALL: [[COPY:%[0-9]+]]:vr512 = COPY [[VINSERTF64x4Zrr]]
- ; ALL: %zmm0 = COPY [[COPY]]
+ ; ALL: %zmm0 = COPY [[VINSERTF64x4Zrr]]
; ALL: RET 0, implicit %zmm0
%0(<8 x s32>) = IMPLICIT_DEF
%1(<16 x s32>) = G_MERGE_VALUES %0(<8 x s32>), %0(<8 x s32>)
Modified: llvm/trunk/test/CodeGen/X86/GlobalISel/select-trunc.mir
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/GlobalISel/select-trunc.mir?rev=323291&r1=323290&r2=323291&view=diff
==============================================================================
--- llvm/trunk/test/CodeGen/X86/GlobalISel/select-trunc.mir (original)
+++ llvm/trunk/test/CodeGen/X86/GlobalISel/select-trunc.mir Tue Jan 23 17:35:26 2018
@@ -48,8 +48,7 @@ body: |
; CHECK-LABEL: name: trunc_i32toi1
; CHECK: [[COPY:%[0-9]+]]:gr32 = COPY %edi
; CHECK: [[COPY1:%[0-9]+]]:gr8 = COPY [[COPY]].sub_8bit
- ; CHECK: [[COPY2:%[0-9]+]]:gr8 = COPY [[COPY1]]
- ; CHECK: %al = COPY [[COPY2]]
+ ; CHECK: %al = COPY [[COPY1]]
; CHECK: RET 0, implicit %al
%0(s32) = COPY %edi
%1(s1) = G_TRUNC %0(s32)
More information about the llvm-commits
mailing list