[llvm] efc12a0 - [AArch64][GlobalISel] Use integer type for abs to cneg lowering. (#215463)

via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 12 00:20:39 PDT 2026


Author: David Green
Date: 2026-08-12T08:20:34+01:00
New Revision: efc12a03bd2477eb5737eb3453b67d64230d134a

URL: https://github.com/llvm/llvm-project/commit/efc12a03bd2477eb5737eb3453b67d64230d134a
DIFF: https://github.com/llvm/llvm-project/commit/efc12a03bd2477eb5737eb3453b67d64230d134a.diff

LOG: [AArch64][GlobalISel] Use integer type for abs to cneg lowering. (#215463)

Added: 
    

Modified: 
    llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
    llvm/test/CodeGen/AArch64/GlobalISel/legalize-abs.mir

Removed: 
    


################################################################################
diff  --git a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
index a6c5a267c87db..9064337e96e30 100644
--- a/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
+++ b/llvm/lib/CodeGen/GlobalISel/LegalizerHelper.cpp
@@ -10768,7 +10768,7 @@ LegalizerHelper::LegalizeResult
 LegalizerHelper::lowerAbsToCNeg(MachineInstr &MI) {
   Register SrcReg = MI.getOperand(1).getReg();
   Register DestReg = MI.getOperand(0).getReg();
-  LLT Ty = MRI.getType(SrcReg), IType = LLT::scalar(1);
+  LLT Ty = MRI.getType(SrcReg), IType = LLT::integer(1);
   auto Zero = MIRBuilder.buildConstant(Ty, 0).getReg(0);
   auto Sub = MIRBuilder.buildSub(Ty, Zero, SrcReg).getReg(0);
   auto ICmp = MIRBuilder.buildICmp(CmpInst::ICMP_SGT, IType, SrcReg, Zero);

diff  --git a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-abs.mir b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-abs.mir
index 18b76db815623..ad6b42037c9f6 100644
--- a/llvm/test/CodeGen/AArch64/GlobalISel/legalize-abs.mir
+++ b/llvm/test/CodeGen/AArch64/GlobalISel/legalize-abs.mir
@@ -10,8 +10,8 @@ body:             |
     ; CHECK: [[COPY:%[0-9]+]]:_(i32) = COPY $w0
     ; CHECK-NEXT: [[C:%[0-9]+]]:_(i32) = G_CONSTANT i32 0
     ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(i32) = G_SUB [[C]], [[COPY]]
-    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY]](i32), [[C]]
-    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(i32) = G_SELECT [[ICMP]](s32), [[COPY]], [[SUB]]
+    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(i32) = G_ICMP intpred(sgt), [[COPY]](i32), [[C]]
+    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(i32) = G_SELECT [[ICMP]](i32), [[COPY]], [[SUB]]
     ; CHECK-NEXT: $w0 = COPY [[SELECT]](i32)
     ;
     ; CHECK-CSSC-LABEL: name: abs_s32
@@ -31,8 +31,8 @@ body:             |
     ; CHECK: [[COPY:%[0-9]+]]:_(i64) = COPY $x0
     ; CHECK-NEXT: [[C:%[0-9]+]]:_(i64) = G_CONSTANT i64 0
     ; CHECK-NEXT: [[SUB:%[0-9]+]]:_(i64) = G_SUB [[C]], [[COPY]]
-    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(s32) = G_ICMP intpred(sgt), [[COPY]](i64), [[C]]
-    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(i64) = G_SELECT [[ICMP]](s32), [[COPY]], [[SUB]]
+    ; CHECK-NEXT: [[ICMP:%[0-9]+]]:_(i32) = G_ICMP intpred(sgt), [[COPY]](i64), [[C]]
+    ; CHECK-NEXT: [[SELECT:%[0-9]+]]:_(i64) = G_SELECT [[ICMP]](i32), [[COPY]], [[SUB]]
     ; CHECK-NEXT: $x0 = COPY [[SELECT]](i64)
     ;
     ; CHECK-CSSC-LABEL: name: abs_s64


        


More information about the llvm-commits mailing list