[PATCH] D154845: [ARM] mark tMOVi32imm as killing flags

Simon Wallis via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Jul 11 02:08:48 PDT 2023


simonwallis2 updated this revision to Diff 538972.
simonwallis2 added a comment.

Addressed review feedback by adding comment to test case.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D154845/new/

https://reviews.llvm.org/D154845

Files:
  llvm/lib/Target/ARM/ARMInstrThumb.td
  llvm/test/CodeGen/ARM/cse-call.ll
  llvm/test/CodeGen/ARM/udivmodei5.ll


Index: llvm/test/CodeGen/ARM/udivmodei5.ll
===================================================================
--- llvm/test/CodeGen/ARM/udivmodei5.ll
+++ llvm/test/CodeGen/ARM/udivmodei5.ll
@@ -1,4 +1,6 @@
 ; RUN: llc -mtriple=arm-eabi < %s | FileCheck %s
+; RUN: llc -mtriple=thumbv6m-eabi -mattr=+execute-only -verify-machineinstrs < %s | FileCheck %s
+; v6m execute-only previously failed with: Using an undefined physical register
 
 define i65 @udiv65(i65 %a, i65 %b) nounwind {
 ; CHECK-LABEL: udiv65:
Index: llvm/test/CodeGen/ARM/cse-call.ll
===================================================================
--- llvm/test/CodeGen/ARM/cse-call.ll
+++ llvm/test/CodeGen/ARM/cse-call.ll
@@ -1,10 +1,29 @@
-; RUN: llc < %s -mcpu=arm1136jf-s -verify-machineinstrs | FileCheck %s
+; RUN: llc < %s -mtriple=armv6-apple-ios0.0.0 -mcpu=arm1136jf-s -verify-machineinstrs | FileCheck %s
+; RUN: llc -mtriple=thumbv6m-eabi -mattr=+execute-only -verify-machineinstrs %s -o - | FileCheck --check-prefix=CHECK-T1 %s
 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:32:64-v128:32:128-a0:0:32-n32-S32"
-target triple = "armv6-apple-ios0.0.0"
 
 ; Don't CSE a cmp across a call that clobbers CPSR.
 ;
 ; CHECK: cmp
+
+; CHECK-T1: movs [[REG:r[0-7]+]], :upper8_15:
+; CHECK-T1-NEXT: lsls    [[REG]], [[REG]], #8
+; CHECK-T1-NEXT: adds    [[REG]], :upper0_7:
+; CHECK-T1-NEXT: lsls    [[REG]], [[REG]], #8
+; CHECK-T1-NEXT: adds    [[REG]], :lower8_15:
+; CHECK-T1-NEXT: lsls    [[REG]], [[REG]], #8
+; CHECK-T1-NEXT: adds    [[REG]], :lower0_7:
+
+; CHECK-T1: movs [[REG:r[0-7]+]], :upper8_15:
+; CHECK-T1-NEXT: lsls    [[REG]], [[REG]], #8
+; CHECK-T1-NEXT: adds    [[REG]], :upper0_7:
+; CHECK-T1-NEXT: lsls    [[REG]], [[REG]], #8
+; CHECK-T1-NEXT: adds    [[REG]], :lower8_15:
+; CHECK-T1-NEXT: lsls    [[REG]], [[REG]], #8
+; CHECK-T1-NEXT: adds    [[REG]], :lower0_7:
+
+; CHECK-T1: cmp
+
 ; CHECK: S_trimzeros
 ; CHECK: cmp
 ; CHECK: strlen
Index: llvm/lib/Target/ARM/ARMInstrThumb.td
===================================================================
--- llvm/lib/Target/ARM/ARMInstrThumb.td
+++ llvm/lib/Target/ARM/ARMInstrThumb.td
@@ -1609,7 +1609,7 @@
 // relocations.
 // This is a single pseudo instruction to make it re-materializable.
 // FIXME: Remove this when we can do generalized remat.
-let isReMaterializable = 1, isMoveImm = 1, Size = 16, hasNoSchedulingInfo = 1 in
+let Defs = [CPSR], isReMaterializable = 1, isMoveImm = 1, Size = 16, hasNoSchedulingInfo = 1 in
 def tMOVi32imm : PseudoInst<(outs rGPR:$dst), (ins i32imm:$src), NoItinerary,
                             [(set rGPR:$dst, (i32 imm:$src))]>,
                             Requires<[IsThumb1Only, GenExecuteOnly, DontUseMovt]>;


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D154845.538972.patch
Type: text/x-patch
Size: 2760 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230711/0c649830/attachment.bin>


More information about the llvm-commits mailing list