Skip to content

Commit 401c933

Browse files
committed
Add test that shows scalarization of load-ext-extract sequence.
1 parent 03f9c70 commit 401c933

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
2+
; RUN: opt -passes=vector-combine,dce,vector-combine -mtriple=arm64-apple-darwinos -S %s | FileCheck %s
3+
4+
define noundef i32 @load_ext_extract(ptr %src) {
5+
; CHECK-LABEL: define noundef i32 @load_ext_extract(
6+
; CHECK-SAME: ptr [[SRC:%.*]]) {
7+
; CHECK-NEXT: [[ENTRY:.*:]]
8+
; CHECK-NEXT: [[TMP14:%.*]] = load i32, ptr [[SRC]], align 4
9+
; CHECK-NEXT: [[TMP15:%.*]] = lshr i32 [[TMP14]], 24
10+
; CHECK-NEXT: [[TMP16:%.*]] = lshr i32 [[TMP14]], 16
11+
; CHECK-NEXT: [[TMP17:%.*]] = and i32 [[TMP16]], 255
12+
; CHECK-NEXT: [[TMP18:%.*]] = lshr i32 [[TMP14]], 8
13+
; CHECK-NEXT: [[TMP19:%.*]] = and i32 [[TMP18]], 255
14+
; CHECK-NEXT: [[TMP20:%.*]] = and i32 [[TMP14]], 255
15+
; CHECK-NEXT: [[ADD1:%.*]] = add i32 [[TMP20]], [[TMP19]]
16+
; CHECK-NEXT: [[ADD2:%.*]] = add i32 [[ADD1]], [[TMP17]]
17+
; CHECK-NEXT: [[ADD3:%.*]] = add i32 [[ADD2]], [[TMP15]]
18+
; CHECK-NEXT: ret i32 [[ADD3]]
19+
;
20+
entry:
21+
%x = load <4 x i8>, ptr %src, align 4
22+
%ext = zext nneg <4 x i8> %x to <4 x i32>
23+
%ext.0 = extractelement <4 x i32> %ext, i64 0
24+
%ext.1 = extractelement <4 x i32> %ext, i64 1
25+
%ext.2 = extractelement <4 x i32> %ext, i64 2
26+
%ext.3 = extractelement <4 x i32> %ext, i64 3
27+
28+
%add1 = add i32 %ext.0, %ext.1
29+
%add2 = add i32 %add1, %ext.2
30+
%add3 = add i32 %add2, %ext.3
31+
ret i32 %add3
32+
}

0 commit comments

Comments
 (0)