1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
2
; RUN: llc -verify-machineinstrs -mtriple=powerpc64le-unknown-linux-gnu \
3
3
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \
4
- ; RUN: FileCheck %s -check-prefixes=CHECK-LE ,CHECK
4
+ ; RUN: FileCheck %s -check-prefixes=CHECK,CHECK-LE
5
5
6
6
; RUN: llc -verify-machineinstrs -mtriple=powerpc64-unknown-linux-gnu \
7
7
; RUN: -mcpu=pwr10 -ppc-asm-full-reg-names -ppc-vsr-nums-as-vr < %s | \
8
- ; RUN: FileCheck %s -check-prefixes=CHECK-BE ,CHECK
8
+ ; RUN: FileCheck %s -check-prefixes=CHECK,CHECK-BE
9
9
10
10
; This test case aims to test the builtins for vector rotate instructions
11
11
; on Power10.
@@ -24,10 +24,19 @@ define <1 x i128> @test_vrlq(<1 x i128> %x, <1 x i128> %y) {
24
24
}
25
25
26
26
define <1 x i128 > @test_vrlq_cost_mult8 (<1 x i128 > %x ) {
27
- ; CHECK-LABEL: test_vrlq_cost_mult8:
28
- ; CHECK: # %bb.0:
29
- ; CHECK: vrlq v2, v3, v2
30
- ; CHECK-NEXT: blr
27
+ ; CHECK-LE-LABEL: test_vrlq_cost_mult8:
28
+ ; CHECK-LE: # %bb.0:
29
+ ; CHECK-LE-NEXT: plxv v3, .LCPI1_0@PCREL(0), 1
30
+ ; CHECK-LE-NEXT: vrlq v2, v3, v2
31
+ ; CHECK-LE-NEXT: blr
32
+ ;
33
+ ; CHECK-BE-LABEL: test_vrlq_cost_mult8:
34
+ ; CHECK-BE: # %bb.0:
35
+ ; CHECK-BE-NEXT: addis r3, r2, .LCPI1_0@toc@ha
36
+ ; CHECK-BE-NEXT: addi r3, r3, .LCPI1_0@toc@l
37
+ ; CHECK-BE-NEXT: lxvx v3, 0, r3
38
+ ; CHECK-BE-NEXT: vrlq v2, v3, v2
39
+ ; CHECK-BE-NEXT: blr
31
40
%shl.i = shl <1 x i128 > <i128 16 >, %x
32
41
%sub.i = sub <1 x i128 > <i128 128 >, %x
33
42
%lshr.i = lshr <1 x i128 > <i128 16 >, %sub.i
@@ -36,10 +45,19 @@ define <1 x i128> @test_vrlq_cost_mult8(<1 x i128> %x) {
36
45
}
37
46
38
47
define <1 x i128 > @test_vrlq_cost_non_mult8 (<1 x i128 > %x ) {
39
- ; CHECK-LABEL: test_vrlq_cost_non_mult8:
40
- ; CHECK: # %bb.0:
41
- ; CHECK: vrlq v2, v3, v2
42
- ; CHECK-NEXT: blr
48
+ ; CHECK-LE-LABEL: test_vrlq_cost_non_mult8:
49
+ ; CHECK-LE: # %bb.0:
50
+ ; CHECK-LE-NEXT: plxv v3, .LCPI2_0@PCREL(0), 1
51
+ ; CHECK-LE-NEXT: vrlq v2, v3, v2
52
+ ; CHECK-LE-NEXT: blr
53
+ ;
54
+ ; CHECK-BE-LABEL: test_vrlq_cost_non_mult8:
55
+ ; CHECK-BE: # %bb.0:
56
+ ; CHECK-BE-NEXT: addis r3, r2, .LCPI2_0@toc@ha
57
+ ; CHECK-BE-NEXT: addi r3, r3, .LCPI2_0@toc@l
58
+ ; CHECK-BE-NEXT: lxvx v3, 0, r3
59
+ ; CHECK-BE-NEXT: vrlq v2, v3, v2
60
+ ; CHECK-BE-NEXT: blr
43
61
%shl.i = shl <1 x i128 > <i128 4 >, %x
44
62
%sub.i = sub <1 x i128 > <i128 128 >, %x
45
63
%lshr.i = lshr <1 x i128 > <i128 4 >, %sub.i
@@ -61,14 +79,21 @@ entry:
61
79
62
80
; Function Attrs: nounwind readnone
63
81
define <1 x i128 > @test_vrlqnm (<1 x i128 > %a , <1 x i128 > %b , <1 x i128 > %c ) {
64
- ; CHECK-LABEL: test_vrlqnm:
65
- ; CHECK: # %bb.0: # %entry
66
- ; CHECK-BE: lxvx v5
67
- ; CHECK-BE-NEXT: vperm v3, v3, v4, v5
68
- ; CHECK-LE-NEXT: plxv v5
82
+ ; CHECK-LE-LABEL: test_vrlqnm:
83
+ ; CHECK-LE: # %bb.0: # %entry
84
+ ; CHECK-LE-NEXT: plxv v5, .LCPI4_0@PCREL(0), 1
69
85
; CHECK-LE-NEXT: vperm v3, v4, v3, v5
70
- ; CHECK-NEXT: vrlqnm v2, v2, v3
71
- ; CHECK-NEXT: blr
86
+ ; CHECK-LE-NEXT: vrlqnm v2, v2, v3
87
+ ; CHECK-LE-NEXT: blr
88
+ ;
89
+ ; CHECK-BE-LABEL: test_vrlqnm:
90
+ ; CHECK-BE: # %bb.0: # %entry
91
+ ; CHECK-BE-NEXT: addis r3, r2, .LCPI4_0@toc@ha
92
+ ; CHECK-BE-NEXT: addi r3, r3, .LCPI4_0@toc@l
93
+ ; CHECK-BE-NEXT: lxvx v5, 0, r3
94
+ ; CHECK-BE-NEXT: vperm v3, v3, v4, v5
95
+ ; CHECK-BE-NEXT: vrlqnm v2, v2, v3
96
+ ; CHECK-BE-NEXT: blr
72
97
entry:
73
98
%0 = bitcast <1 x i128 > %b to <16 x i8 >
74
99
%1 = bitcast <1 x i128 > %c to <16 x i8 >
0 commit comments