@@ -9,57 +9,21 @@ target triple = "aarch64-unknown-linux-gnu"
9
9
;
10
10
11
11
define <16 x i8 > @reverse_v16i8 (<16 x i8 > %a ) #0 {
12
- ; CHECK-LABEL: .LCPI0_0:
13
- ; CHECK: .byte 15 // 0xf
14
- ; CHECK-NEXT: .byte 14 // 0xe
15
- ; CHECK-NEXT: .byte 13 // 0xd
16
- ; CHECK-NEXT: .byte 12 // 0xc
17
- ; CHECK-NEXT: .byte 11 // 0xb
18
- ; CHECK-NEXT: .byte 10 // 0xa
19
- ; CHECK-NEXT: .byte 9 // 0x9
20
- ; CHECK-NEXT: .byte 8 // 0x8
21
- ; CHECK-NEXT: .byte 7 // 0x7
22
- ; CHECK-NEXT: .byte 6 // 0x6
23
- ; CHECK-NEXT: .byte 5 // 0x5
24
- ; CHECK-NEXT: .byte 4 // 0x4
25
- ; CHECK-NEXT: .byte 3 // 0x3
26
- ; CHECK-NEXT: .byte 2 // 0x2
27
- ; CHECK-NEXT: .byte 1 // 0x1
28
- ; CHECK-NEXT: .byte 0 // 0x0
29
12
; CHECK-LABEL: reverse_v16i8:
30
13
; CHECK: // %bb.0:
31
- ; CHECK-NEXT: adrp x8, .LCPI0_0
32
- ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI0_0]
33
- ; CHECK-NEXT: tbl v0.16b, { v0.16b }, v1.16b
14
+ ; CHECK-NEXT: rev64 v0.16b, v0.16b
15
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
34
16
; CHECK-NEXT: ret
35
17
36
18
%res = call <16 x i8 > @llvm.experimental.vector.reverse.v16i8 (<16 x i8 > %a )
37
19
ret <16 x i8 > %res
38
20
}
39
21
40
22
define <8 x i16 > @reverse_v8i16 (<8 x i16 > %a ) #0 {
41
- ; CHECK-LABEL: .LCPI1_0:
42
- ; CHECK: .byte 14 // 0xe
43
- ; CHECK-NEXT: .byte 15 // 0xf
44
- ; CHECK-NEXT: .byte 12 // 0xc
45
- ; CHECK-NEXT: .byte 13 // 0xd
46
- ; CHECK-NEXT: .byte 10 // 0xa
47
- ; CHECK-NEXT: .byte 11 // 0xb
48
- ; CHECK-NEXT: .byte 8 // 0x8
49
- ; CHECK-NEXT: .byte 9 // 0x9
50
- ; CHECK-NEXT: .byte 6 // 0x6
51
- ; CHECK-NEXT: .byte 7 // 0x7
52
- ; CHECK-NEXT: .byte 4 // 0x4
53
- ; CHECK-NEXT: .byte 5 // 0x5
54
- ; CHECK-NEXT: .byte 2 // 0x2
55
- ; CHECK-NEXT: .byte 3 // 0x3
56
- ; CHECK-NEXT: .byte 0 // 0x0
57
- ; CHECK-NEXT: .byte 1 // 0x1
58
23
; CHECK-LABEL: reverse_v8i16:
59
24
; CHECK: // %bb.0:
60
- ; CHECK-NEXT: adrp x8, .LCPI1_0
61
- ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI1_0]
62
- ; CHECK-NEXT: tbl v0.16b, { v0.16b }, v1.16b
25
+ ; CHECK-NEXT: rev64 v0.8h, v0.8h
26
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
63
27
; CHECK-NEXT: ret
64
28
65
29
%res = call <8 x i16 > @llvm.experimental.vector.reverse.v8i16 (<8 x i16 > %a )
@@ -88,28 +52,10 @@ define <2 x i64> @reverse_v2i64(<2 x i64> %a) #0 {
88
52
}
89
53
90
54
define <8 x half > @reverse_v8f16 (<8 x half > %a ) #0 {
91
- ; CHECK-LABEL: .LCPI4_0:
92
- ; CHECK: .byte 14 // 0xe
93
- ; CHECK-NEXT: .byte 15 // 0xf
94
- ; CHECK-NEXT: .byte 12 // 0xc
95
- ; CHECK-NEXT: .byte 13 // 0xd
96
- ; CHECK-NEXT: .byte 10 // 0xa
97
- ; CHECK-NEXT: .byte 11 // 0xb
98
- ; CHECK-NEXT: .byte 8 // 0x8
99
- ; CHECK-NEXT: .byte 9 // 0x9
100
- ; CHECK-NEXT: .byte 6 // 0x6
101
- ; CHECK-NEXT: .byte 7 // 0x7
102
- ; CHECK-NEXT: .byte 4 // 0x4
103
- ; CHECK-NEXT: .byte 5 // 0x5
104
- ; CHECK-NEXT: .byte 2 // 0x2
105
- ; CHECK-NEXT: .byte 3 // 0x3
106
- ; CHECK-NEXT: .byte 0 // 0x0
107
- ; CHECK-NEXT: .byte 1 // 0x1
108
55
; CHECK-LABEL: reverse_v8f16:
109
56
; CHECK: // %bb.0:
110
- ; CHECK-NEXT: adrp x8, .LCPI4_0
111
- ; CHECK-NEXT: ldr q1, [x8, :lo12:.LCPI4_0]
112
- ; CHECK-NEXT: tbl v0.16b, { v0.16b }, v1.16b
57
+ ; CHECK-NEXT: rev64 v0.8h, v0.8h
58
+ ; CHECK-NEXT: ext v0.16b, v0.16b, v0.16b, #8
113
59
; CHECK-NEXT: ret
114
60
115
61
%res = call <8 x half > @llvm.experimental.vector.reverse.v8f16 (<8 x half > %a )
0 commit comments