1
1
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
- ; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s
2
+ ; RUN: llc -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s --check-prefixes=CHECK,CHECK-SD
3
+ ; RUN: llc -mtriple=aarch64-unknown-linux-gnu -global-isel -global-isel-abort=2 < %s 2>&1 | FileCheck %s --check-prefixes=CHECK,CHECK-GI
4
+
5
+ ; CHECK-GI: warning: Instruction selection used fallback path for test_bit_sink_operand
3
6
4
7
; BIT Bitwise Insert if True
5
8
;
6
9
; 8-bit vectors tests
7
10
8
11
define <1 x i8 > @test_bit_v1i8 (<1 x i8 > %A , <1 x i8 > %B , <1 x i8 > %C ) {
9
- ; CHECK-LABEL: test_bit_v1i8:
10
- ; CHECK: // %bb.0:
11
- ; CHECK-NEXT: bit v0.8b, v1.8b, v2.8b
12
- ; CHECK-NEXT: ret
12
+ ; CHECK-SD-LABEL: test_bit_v1i8:
13
+ ; CHECK-SD: // %bb.0:
14
+ ; CHECK-SD-NEXT: bit v0.8b, v1.8b, v2.8b
15
+ ; CHECK-SD-NEXT: ret
16
+ ;
17
+ ; CHECK-GI-LABEL: test_bit_v1i8:
18
+ ; CHECK-GI: // %bb.0:
19
+ ; CHECK-GI-NEXT: fmov x8, d0
20
+ ; CHECK-GI-NEXT: fmov x9, d1
21
+ ; CHECK-GI-NEXT: fmov x10, d2
22
+ ; CHECK-GI-NEXT: and w9, w10, w9
23
+ ; CHECK-GI-NEXT: bic w8, w8, w10
24
+ ; CHECK-GI-NEXT: orr w8, w9, w8
25
+ ; CHECK-GI-NEXT: fmov s0, w8
26
+ ; CHECK-GI-NEXT: ret
13
27
%and = and <1 x i8 > %C , %B
14
28
%neg = xor <1 x i8 > %C , <i8 -1 >
15
29
%and1 = and <1 x i8 > %neg , %A
@@ -20,10 +34,21 @@ define <1 x i8> @test_bit_v1i8(<1 x i8> %A, <1 x i8> %B, <1 x i8> %C) {
20
34
; 16-bit vectors tests
21
35
22
36
define <1 x i16 > @test_bit_v1i16 (<1 x i16 > %A , <1 x i16 > %B , <1 x i16 > %C ) {
23
- ; CHECK-LABEL: test_bit_v1i16:
24
- ; CHECK: // %bb.0:
25
- ; CHECK-NEXT: bit v0.8b, v1.8b, v2.8b
26
- ; CHECK-NEXT: ret
37
+ ; CHECK-SD-LABEL: test_bit_v1i16:
38
+ ; CHECK-SD: // %bb.0:
39
+ ; CHECK-SD-NEXT: bit v0.8b, v1.8b, v2.8b
40
+ ; CHECK-SD-NEXT: ret
41
+ ;
42
+ ; CHECK-GI-LABEL: test_bit_v1i16:
43
+ ; CHECK-GI: // %bb.0:
44
+ ; CHECK-GI-NEXT: fmov x8, d0
45
+ ; CHECK-GI-NEXT: fmov x9, d1
46
+ ; CHECK-GI-NEXT: fmov x10, d2
47
+ ; CHECK-GI-NEXT: and w9, w10, w9
48
+ ; CHECK-GI-NEXT: bic w8, w8, w10
49
+ ; CHECK-GI-NEXT: orr w8, w9, w8
50
+ ; CHECK-GI-NEXT: fmov s0, w8
51
+ ; CHECK-GI-NEXT: ret
27
52
%and = and <1 x i16 > %C , %B
28
53
%neg = xor <1 x i16 > %C , <i16 -1 >
29
54
%and1 = and <1 x i16 > %neg , %A
@@ -34,10 +59,23 @@ define <1 x i16> @test_bit_v1i16(<1 x i16> %A, <1 x i16> %B, <1 x i16> %C) {
34
59
; 32-bit vectors tests
35
60
36
61
define <1 x i32 > @test_bit_v1i32 (<1 x i32 > %A , <1 x i32 > %B , <1 x i32 > %C ) {
37
- ; CHECK-LABEL: test_bit_v1i32:
38
- ; CHECK: // %bb.0:
39
- ; CHECK-NEXT: bit v0.8b, v1.8b, v2.8b
40
- ; CHECK-NEXT: ret
62
+ ; CHECK-SD-LABEL: test_bit_v1i32:
63
+ ; CHECK-SD: // %bb.0:
64
+ ; CHECK-SD-NEXT: bit v0.8b, v1.8b, v2.8b
65
+ ; CHECK-SD-NEXT: ret
66
+ ;
67
+ ; CHECK-GI-LABEL: test_bit_v1i32:
68
+ ; CHECK-GI: // %bb.0:
69
+ ; CHECK-GI-NEXT: fmov x8, d0
70
+ ; CHECK-GI-NEXT: fmov x9, d1
71
+ ; CHECK-GI-NEXT: fmov x10, d2
72
+ ; CHECK-GI-NEXT: and w9, w10, w9
73
+ ; CHECK-GI-NEXT: bic w8, w8, w10
74
+ ; CHECK-GI-NEXT: orr w8, w9, w8
75
+ ; CHECK-GI-NEXT: fmov s0, w8
76
+ ; CHECK-GI-NEXT: mov v0.s[1], w8
77
+ ; CHECK-GI-NEXT: // kill: def $d0 killed $d0 killed $q0
78
+ ; CHECK-GI-NEXT: ret
41
79
%and = and <1 x i32 > %C , %B
42
80
%neg = xor <1 x i32 > %C , <i32 -1 >
43
81
%and1 = and <1 x i32 > %neg , %A
@@ -48,10 +86,21 @@ define <1 x i32> @test_bit_v1i32(<1 x i32> %A, <1 x i32> %B, <1 x i32> %C) {
48
86
; 64-bit vectors tests
49
87
50
88
define <1 x i64 > @test_bit_v1i64 (<1 x i64 > %A , <1 x i64 > %B , <1 x i64 > %C ) {
51
- ; CHECK-LABEL: test_bit_v1i64:
52
- ; CHECK: // %bb.0:
53
- ; CHECK-NEXT: bit v0.8b, v1.8b, v2.8b
54
- ; CHECK-NEXT: ret
89
+ ; CHECK-SD-LABEL: test_bit_v1i64:
90
+ ; CHECK-SD: // %bb.0:
91
+ ; CHECK-SD-NEXT: bit v0.8b, v1.8b, v2.8b
92
+ ; CHECK-SD-NEXT: ret
93
+ ;
94
+ ; CHECK-GI-LABEL: test_bit_v1i64:
95
+ ; CHECK-GI: // %bb.0:
96
+ ; CHECK-GI-NEXT: fmov x8, d2
97
+ ; CHECK-GI-NEXT: fmov x9, d1
98
+ ; CHECK-GI-NEXT: fmov x10, d0
99
+ ; CHECK-GI-NEXT: and x9, x8, x9
100
+ ; CHECK-GI-NEXT: bic x8, x10, x8
101
+ ; CHECK-GI-NEXT: orr x8, x9, x8
102
+ ; CHECK-GI-NEXT: fmov d0, x8
103
+ ; CHECK-GI-NEXT: ret
55
104
%and = and <1 x i64 > %C , %B
56
105
%neg = xor <1 x i64 > %C , <i64 -1 >
57
106
%and1 = and <1 x i64 > %neg , %A
0 commit comments