Skip to content

Commit 057dcb3

Browse files
committed
Add extra test for signext, simplify variable assignment and update comments.
1 parent bf34dd3 commit 057dcb3

File tree

2 files changed

+45
-19
lines changed

2 files changed

+45
-19
lines changed

llvm/lib/Target/PowerPC/PPCISelLowering.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7296,17 +7296,15 @@ SDValue PPCTargetLowering::LowerFormalArguments_AIX(
72967296
if (!ArgVT.isVector() && !ValVT.isVector() && ArgVT.isInteger() &&
72977297
ValVT.isInteger() &&
72987298
ArgVT.getScalarSizeInBits() < ValVT.getScalarSizeInBits()) {
7299-
// It is possible to have either real integer values that aren't
7300-
// the power of two sizes, or integers that were not originally
7301-
// integers. In the latter case, these could have came from structs,
7299+
// It is possible to have either real integer values
7300+
// or integers that were not originally integers.
7301+
// In the latter case, these could have came from structs,
73027302
// and these integers would not have an extend on the parameter.
73037303
// Since these types of integers do not have an extend specified
73047304
// in the first place, the type of extend that we do should not matter.
7305-
EVT TruncatedArgVT;
7306-
if (ArgVT.isSimple())
7307-
TruncatedArgVT = ArgVT.getSimpleVT() == MVT::i1 ? MVT::i8 : ArgVT;
7308-
else
7309-
TruncatedArgVT = ArgVT;
7305+
EVT TruncatedArgVT = ArgVT.isSimple() && ArgVT.getSimpleVT() == MVT::i1
7306+
? MVT::i8
7307+
: ArgVT;
73107308
SDValue ArgValueTrunc =
73117309
DAG.getNode(ISD::TRUNCATE, dl, TruncatedArgVT, ArgValue);
73127310
SDValue ArgValueExt =
Lines changed: 39 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
22
; RUN: llc --verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff \
3-
; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefixes=CHECK,CHECK32
3+
; RUN: -ppc-asm-full-reg-names -mcpu=pwr8 < %s | \
4+
; RUN: FileCheck %s --check-prefixes=CHECK,CHECK32
45
; RUN: llc --verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff \
5-
; RUN: -mcpu=pwr8 < %s | FileCheck %s --check-prefixes=CHECK,CHECK64
6+
; RUN: -ppc-asm-full-reg-names -mcpu=pwr8 < %s | \
7+
; RUN: FileCheck %s --check-prefixes=CHECK,CHECK64
68

79
define ptr @lower_args(ptr %_0, i32 %0, i32 %1, i32 %2, i32 %3, ptr %4, ptr %5, i64 %6, i24 %7) {
810
; CHECK-LABEL: lower_args:
@@ -12,22 +14,48 @@ entry:
1214
ret ptr %_0
1315
}
1416

15-
define i32 @lower_args2(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i24 %i) {
16-
; CHECK32-LABEL: lower_args2:
17+
define i32 @lower_args_withops_zeroext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i24 %i) {
18+
; CHECK32-LABEL: lower_args_withops_zeroext:
1719
; CHECK32: # %bb.0: # %entry
18-
; CHECK32-NEXT: lwz 3, 56(1)
19-
; CHECK32-NEXT: addi 3, 3, 255
20-
; CHECK32-NEXT: clrlwi 3, 3, 8
20+
; CHECK32-NEXT: lwz r3, 56(r1)
21+
; CHECK32-NEXT: addi r3, r3, 255
22+
; CHECK32-NEXT: clrlwi r3, r3, 8
2123
; CHECK32-NEXT: blr
2224
;
23-
; CHECK64-LABEL: lower_args2:
25+
; CHECK64-LABEL: lower_args_withops_zeroext:
2426
; CHECK64: # %bb.0: # %entry
25-
; CHECK64-NEXT: lwz 3, 116(1)
26-
; CHECK64-NEXT: addi 3, 3, 255
27-
; CHECK64-NEXT: clrldi 3, 3, 40
27+
; CHECK64-NEXT: lwz r3, 116(r1)
28+
; CHECK64-NEXT: addi r3, r3, 255
29+
; CHECK64-NEXT: clrldi r3, r3, 40
2830
; CHECK64-NEXT: blr
2931
entry:
3032
%0 = add i24 %i, 255
3133
%1 = zext i24 %0 to i32
3234
ret i32 %1
3335
}
36+
37+
define i32 @lower_args_withops_signext(i32 %a, i32 %b, i32 %c, i32 %d, i32 %e, i32 %f, i32 %g, i32 %h, i24 signext %i) {
38+
; CHECK32-LABEL: lower_args_withops_signext:
39+
; CHECK32: # %bb.0: # %entry
40+
; CHECK32-NEXT: lwz r3, 56(r1)
41+
; CHECK32-NEXT: slwi r3, r3, 8
42+
; CHECK32-NEXT: srawi r3, r3, 8
43+
; CHECK32-NEXT: slwi r3, r3, 8
44+
; CHECK32-NEXT: addi r3, r3, 22272
45+
; CHECK32-NEXT: srawi r3, r3, 8
46+
; CHECK32-NEXT: blr
47+
;
48+
; CHECK64-LABEL: lower_args_withops_signext:
49+
; CHECK64: # %bb.0: # %entry
50+
; CHECK64-NEXT: lwz r3, 116(r1)
51+
; CHECK64-NEXT: slwi r3, r3, 8
52+
; CHECK64-NEXT: srawi r3, r3, 8
53+
; CHECK64-NEXT: addi r3, r3, 87
54+
; CHECK64-NEXT: sldi r3, r3, 40
55+
; CHECK64-NEXT: sradi r3, r3, 40
56+
; CHECK64-NEXT: blr
57+
entry:
58+
%0 = add i24 %i, 87
59+
%1 = sext i24 %0 to i32
60+
ret i32 %1
61+
}

0 commit comments

Comments
 (0)