Skip to content

Commit 08280c4

Browse files
author
QingShan Zhang
committed
[NFC][Test] Format the PowerPC test for incoming patch
1 parent 38d32e4 commit 08280c4

File tree

3 files changed

+108
-55
lines changed

3 files changed

+108
-55
lines changed
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -mcpu=pwr9 -mtriple=powerpc64le-unknown-unknown \
23
; RUN: -verify-machineinstrs -ppc-asm-full-reg-names \
34
; RUN: -ppc-vsr-nums-as-vr < %s | FileCheck %s
45

56
@best8x8mode = external dso_local local_unnamed_addr global [4 x i16], align 2
67
define dso_local void @AlignDSForm() local_unnamed_addr {
8+
; CHECK-LABEL: AlignDSForm:
9+
; CHECK: # %bb.0: # %entry
10+
; CHECK-NEXT: addis r3, r2, best8x8mode@toc@ha
11+
; CHECK-NEXT: addi r3, r3, best8x8mode@toc@l
12+
; CHECK-NEXT: ldx r3, 0, r3
13+
; CHECK-NEXT: std r3, 0(r3)
714
entry:
815
%0 = load <4 x i16>, <4 x i16>* bitcast ([4 x i16]* @best8x8mode to <4 x i16>*), align 2
916
store <4 x i16> %0, <4 x i16>* undef, align 4
1017
unreachable
11-
; CHECK-LABEL: AlignDSForm
12-
; CHECK: addis r{{[0-9]+}}, r{{[0-9]+}}, best8x8mode@toc@ha
13-
; CHECK: addi r[[REG:[0-9]+]], r{{[0-9]+}}, best8x8mode@toc@l
14-
; CHECK: ldx r{{[0-9]+}}, 0, r[[REG]]
1518
}
1619

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,26 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -verify-machineinstrs < %s -mcpu=pwr7 -mattr=-vsx| FileCheck %s
23
; RUN: llc -verify-machineinstrs < %s -mcpu=pwr7 -mattr=+vsx | FileCheck -check-prefix=CHECK-VSX %s
34
target datalayout = "E-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-f128:128:128-v128:128:128-n32:64"
45
target triple = "powerpc64-unknown-linux-gnu"
56

67
define void @copy_to_conceal(<8 x i16>* %inp) #0 {
8+
; CHECK-LABEL: copy_to_conceal:
9+
; CHECK: # %bb.0: # %entry
10+
; CHECK-NEXT: vxor 2, 2, 2
11+
; CHECK-NEXT: addi 4, 1, -16
12+
; CHECK-NEXT: stvx 2, 0, 4
13+
; CHECK-NEXT: ld 4, -8(1)
14+
; CHECK-NEXT: std 4, 8(3)
15+
; CHECK-NEXT: ld 4, -16(1)
16+
; CHECK-NEXT: stdx 4, 0, 3
17+
; CHECK-NEXT: blr
18+
;
19+
; CHECK-VSX-LABEL: copy_to_conceal:
20+
; CHECK-VSX: # %bb.0: # %entry
21+
; CHECK-VSX-NEXT: xxlxor 0, 0, 0
22+
; CHECK-VSX-NEXT: stxvw4x 0, 0, 3
23+
; CHECK-VSX-NEXT: blr
724
entry:
825
store <8 x i16> zeroinitializer, <8 x i16>* %inp, align 2
926
br label %if.end210
@@ -14,11 +31,7 @@ if.end210: ; preds = %entry
1431
; This will generate two align-1 i64 stores. Make sure that they are
1532
; indexed stores and not in r+i form (which require the offset to be
1633
; a multiple of 4).
17-
; CHECK: @copy_to_conceal
18-
; CHECK: stdx {{[0-9]+}}, 0,
1934

20-
; CHECK-VSX: @copy_to_conceal
21-
; CHECK-VSX: stxvw4x {{[0-9]+}}, 0,
2235
}
2336

2437
attributes #0 = { nounwind "less-precise-fpmad"="false" "frame-pointer"="non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "unsafe-fp-math"="false" "use-soft-float"="false" }
Lines changed: 84 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,105 +1,142 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
12
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=-vsx | FileCheck %s
23
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:64:64-v128:128:128-a0:0:64-f128:64:128-n32"
34
; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu -mcpu=pwr7 -mattr=+vsx | FileCheck -check-prefix=CHECK-VSX %s
45
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:64:64-v128:128:128-a0:0:64-f128:64:128-n32"
56

67
define void @foo1(i16* %p, i16* %r) nounwind {
8+
; CHECK-LABEL: foo1:
9+
; CHECK: # %bb.0: # %entry
10+
; CHECK-NEXT: lhz 3, 0(3)
11+
; CHECK-NEXT: sth 3, 0(4)
12+
; CHECK-NEXT: blr
13+
;
14+
; CHECK-VSX-LABEL: foo1:
15+
; CHECK-VSX: # %bb.0: # %entry
16+
; CHECK-VSX-NEXT: lhz 3, 0(3)
17+
; CHECK-VSX-NEXT: sth 3, 0(4)
18+
; CHECK-VSX-NEXT: blr
719
entry:
820
%v = load i16, i16* %p, align 1
921
store i16 %v, i16* %r, align 1
1022
ret void
1123

12-
; CHECK: @foo1
13-
; CHECK: lhz
14-
; CHECK: sth
1524

16-
; CHECK-VSX: @foo1
17-
; CHECK-VSX: lhz
18-
; CHECK-VSX: sth
1925
}
2026

2127
define void @foo2(i32* %p, i32* %r) nounwind {
28+
; CHECK-LABEL: foo2:
29+
; CHECK: # %bb.0: # %entry
30+
; CHECK-NEXT: lwz 3, 0(3)
31+
; CHECK-NEXT: stw 3, 0(4)
32+
; CHECK-NEXT: blr
33+
;
34+
; CHECK-VSX-LABEL: foo2:
35+
; CHECK-VSX: # %bb.0: # %entry
36+
; CHECK-VSX-NEXT: lwz 3, 0(3)
37+
; CHECK-VSX-NEXT: stw 3, 0(4)
38+
; CHECK-VSX-NEXT: blr
2239
entry:
2340
%v = load i32, i32* %p, align 1
2441
store i32 %v, i32* %r, align 1
2542
ret void
2643

27-
; CHECK: @foo2
28-
; CHECK: lwz
29-
; CHECK: stw
3044

31-
; CHECK-VSX: @foo2
32-
; CHECK-VSX: lwz
33-
; CHECK-VSX: stw
3445
}
3546

3647
define void @foo3(i64* %p, i64* %r) nounwind {
48+
; CHECK-LABEL: foo3:
49+
; CHECK: # %bb.0: # %entry
50+
; CHECK-NEXT: ldx 3, 0, 3
51+
; CHECK-NEXT: stdx 3, 0, 4
52+
; CHECK-NEXT: blr
53+
;
54+
; CHECK-VSX-LABEL: foo3:
55+
; CHECK-VSX: # %bb.0: # %entry
56+
; CHECK-VSX-NEXT: ldx 3, 0, 3
57+
; CHECK-VSX-NEXT: stdx 3, 0, 4
58+
; CHECK-VSX-NEXT: blr
3759
entry:
3860
%v = load i64, i64* %p, align 1
3961
store i64 %v, i64* %r, align 1
4062
ret void
4163

42-
; CHECK: @foo3
43-
; CHECK: ld
44-
; CHECK: std
4564

46-
; CHECK-VSX: @foo3
47-
; CHECK-VSX: ld
48-
; CHECK-VSX: std
4965
}
5066

5167
define void @foo4(float* %p, float* %r) nounwind {
68+
; CHECK-LABEL: foo4:
69+
; CHECK: # %bb.0: # %entry
70+
; CHECK-NEXT: lfs 0, 0(3)
71+
; CHECK-NEXT: stfs 0, 0(4)
72+
; CHECK-NEXT: blr
73+
;
74+
; CHECK-VSX-LABEL: foo4:
75+
; CHECK-VSX: # %bb.0: # %entry
76+
; CHECK-VSX-NEXT: lfs 0, 0(3)
77+
; CHECK-VSX-NEXT: stfs 0, 0(4)
78+
; CHECK-VSX-NEXT: blr
5279
entry:
5380
%v = load float, float* %p, align 1
5481
store float %v, float* %r, align 1
5582
ret void
5683

57-
; CHECK: @foo4
58-
; CHECK: lfs
59-
; CHECK: stfs
6084

61-
; CHECK-VSX: @foo4
62-
; CHECK-VSX: lfs
63-
; CHECK-VSX: stfs
6485
}
6586

6687
define void @foo5(double* %p, double* %r) nounwind {
88+
; CHECK-LABEL: foo5:
89+
; CHECK: # %bb.0: # %entry
90+
; CHECK-NEXT: lfd 0, 0(3)
91+
; CHECK-NEXT: stfd 0, 0(4)
92+
; CHECK-NEXT: blr
93+
;
94+
; CHECK-VSX-LABEL: foo5:
95+
; CHECK-VSX: # %bb.0: # %entry
96+
; CHECK-VSX-NEXT: lfdx 0, 0, 3
97+
; CHECK-VSX-NEXT: stfdx 0, 0, 4
98+
; CHECK-VSX-NEXT: blr
6799
entry:
68100
%v = load double, double* %p, align 1
69101
store double %v, double* %r, align 1
70102
ret void
71103

72-
; CHECK: @foo5
73-
; CHECK: lfd
74-
; CHECK: stfd
75104

76-
; CHECK-VSX: @foo5
77-
; CHECK-VSX: lfdx
78-
; CHECK-VSX: stfdx
79105
}
80106

81107
define void @foo6(<4 x float>* %p, <4 x float>* %r) nounwind {
82-
entry:
83-
%v = load <4 x float>, <4 x float>* %p, align 1
84-
store <4 x float> %v, <4 x float>* %r, align 1
85-
ret void
86-
87108
; These loads and stores are legalized into aligned loads and stores
88109
; using aligned stack slots.
89-
; CHECK: @foo6
90-
; CHECK-DAG: ld
91-
; CHECK-DAG: ld
92-
; CHECK-DAG: std
93-
; CHECK: stdx
94-
110+
; CHECK-LABEL: foo6:
111+
; CHECK: # %bb.0: # %entry
112+
; CHECK-NEXT: li 5, 15
113+
; CHECK-NEXT: lvsl 3, 0, 3
114+
; CHECK-NEXT: lvx 2, 3, 5
115+
; CHECK-NEXT: lvx 4, 0, 3
116+
; CHECK-NEXT: addi 3, 1, -16
117+
; CHECK-NEXT: vperm 2, 4, 2, 3
118+
; CHECK-NEXT: stvx 2, 0, 3
119+
; CHECK-NEXT: ld 3, -8(1)
120+
; CHECK-NEXT: std 3, 8(4)
121+
; CHECK-NEXT: ld 3, -16(1)
122+
; CHECK-NEXT: stdx 3, 0, 4
123+
; CHECK-NEXT: blr
124+
;
125+
; CHECK-VSX-LABEL: foo6:
126+
; CHECK-VSX: # %bb.0: # %entry
127+
; CHECK-VSX-NEXT: li 5, 15
128+
; CHECK-VSX-NEXT: lvsl 3, 0, 3
129+
; CHECK-VSX-NEXT: lvx 2, 3, 5
130+
; CHECK-VSX-NEXT: lvx 4, 0, 3
131+
; CHECK-VSX-NEXT: vperm 2, 4, 2, 3
132+
; CHECK-VSX-NEXT: stxvw4x 34, 0, 4
133+
; CHECK-VSX-NEXT: blr
95134
; For VSX on P7, unaligned loads and stores are preferable to aligned
96135
; stack slots, but lvsl/vperm is better still. (On P8 lxvw4x is preferable.)
97136
; Using unaligned stxvw4x is preferable on both machines.
98-
; CHECK-VSX: @foo6
99-
; CHECK-VSX-DAG: lvsl
100-
; CHECK-VSX-DAG: lvx
101-
; CHECK-VSX-DAG: lvx
102-
; CHECK-VSX: vperm
103-
; CHECK-VSX: stxvw4x
137+
entry:
138+
%v = load <4 x float>, <4 x float>* %p, align 1
139+
store <4 x float> %v, <4 x float>* %r, align 1
140+
ret void
104141
}
105142

0 commit comments

Comments
 (0)