4
4
define arm_aapcs_vfpcc void @vmovn32_trunc1 (<4 x i32 > %src1 , <4 x i32 > %src2 , <8 x i16 > *%dest ) {
5
5
; CHECK-LABEL: vmovn32_trunc1:
6
6
; CHECK: @ %bb.0: @ %entry
7
- ; CHECK-NEXT: vmov.f32 s8, s2
8
- ; CHECK-NEXT: vmov.f32 s9, s6
9
- ; CHECK-NEXT: vmov.f32 s10, s3
10
- ; CHECK-NEXT: vmov.f32 s11, s7
11
- ; CHECK-NEXT: vstrh.32 q2, [r0, #8]
12
- ; CHECK-NEXT: vmov.f32 s8, s0
13
- ; CHECK-NEXT: vmov.f32 s9, s4
14
- ; CHECK-NEXT: vmov.f32 s10, s1
15
- ; CHECK-NEXT: vmov.f32 s11, s5
16
- ; CHECK-NEXT: vstrh.32 q2, [r0]
7
+ ; CHECK-NEXT: vmovnt.i32 q0, q1
8
+ ; CHECK-NEXT: vstrw.32 q0, [r0]
17
9
; CHECK-NEXT: bx lr
18
10
entry:
19
11
%strided.vec = shufflevector <4 x i32 > %src1 , <4 x i32 > %src2 , <8 x i32 > <i32 0 , i32 4 , i32 1 , i32 5 , i32 2 , i32 6 , i32 3 , i32 7 >
@@ -25,16 +17,8 @@ entry:
25
17
define arm_aapcs_vfpcc void @vmovn32_trunc2 (<4 x i32 > %src1 , <4 x i32 > %src2 , <8 x i16 > *%dest ) {
26
18
; CHECK-LABEL: vmovn32_trunc2:
27
19
; CHECK: @ %bb.0: @ %entry
28
- ; CHECK-NEXT: vmov.f32 s8, s6
29
- ; CHECK-NEXT: vmov.f32 s9, s2
30
- ; CHECK-NEXT: vmov.f32 s10, s7
31
- ; CHECK-NEXT: vmov.f32 s11, s3
32
- ; CHECK-NEXT: vstrh.32 q2, [r0, #8]
33
- ; CHECK-NEXT: vmov.f32 s8, s4
34
- ; CHECK-NEXT: vmov.f32 s9, s0
35
- ; CHECK-NEXT: vmov.f32 s10, s5
36
- ; CHECK-NEXT: vmov.f32 s11, s1
37
- ; CHECK-NEXT: vstrh.32 q2, [r0]
20
+ ; CHECK-NEXT: vmovnt.i32 q1, q0
21
+ ; CHECK-NEXT: vstrw.32 q1, [r0]
38
22
; CHECK-NEXT: bx lr
39
23
entry:
40
24
%strided.vec = shufflevector <4 x i32 > %src1 , <4 x i32 > %src2 , <8 x i32 > <i32 4 , i32 0 , i32 5 , i32 1 , i32 6 , i32 2 , i32 7 , i32 3 >
@@ -46,40 +30,8 @@ entry:
46
30
define arm_aapcs_vfpcc void @vmovn16_trunc1 (<8 x i16 > %src1 , <8 x i16 > %src2 , <16 x i8 > *%dest ) {
47
31
; CHECK-LABEL: vmovn16_trunc1:
48
32
; CHECK: @ %bb.0: @ %entry
49
- ; CHECK-NEXT: vmov.u16 r1, q0[4]
50
- ; CHECK-NEXT: vmov.16 q2[0], r1
51
- ; CHECK-NEXT: vmov.u16 r1, q1[4]
52
- ; CHECK-NEXT: vmov.16 q2[1], r1
53
- ; CHECK-NEXT: vmov.u16 r1, q0[5]
54
- ; CHECK-NEXT: vmov.16 q2[2], r1
55
- ; CHECK-NEXT: vmov.u16 r1, q1[5]
56
- ; CHECK-NEXT: vmov.16 q2[3], r1
57
- ; CHECK-NEXT: vmov.u16 r1, q0[6]
58
- ; CHECK-NEXT: vmov.16 q2[4], r1
59
- ; CHECK-NEXT: vmov.u16 r1, q1[6]
60
- ; CHECK-NEXT: vmov.16 q2[5], r1
61
- ; CHECK-NEXT: vmov.u16 r1, q0[7]
62
- ; CHECK-NEXT: vmov.16 q2[6], r1
63
- ; CHECK-NEXT: vmov.u16 r1, q1[7]
64
- ; CHECK-NEXT: vmov.16 q2[7], r1
65
- ; CHECK-NEXT: vmov.u16 r1, q0[0]
66
- ; CHECK-NEXT: vstrb.16 q2, [r0, #8]
67
- ; CHECK-NEXT: vmov.16 q2[0], r1
68
- ; CHECK-NEXT: vmov.u16 r1, q1[0]
69
- ; CHECK-NEXT: vmov.16 q2[1], r1
70
- ; CHECK-NEXT: vmov.u16 r1, q0[1]
71
- ; CHECK-NEXT: vmov.16 q2[2], r1
72
- ; CHECK-NEXT: vmov.u16 r1, q1[1]
73
- ; CHECK-NEXT: vmov.16 q2[3], r1
74
- ; CHECK-NEXT: vmov.u16 r1, q0[2]
75
- ; CHECK-NEXT: vmov.16 q2[4], r1
76
- ; CHECK-NEXT: vmov.u16 r1, q1[2]
77
- ; CHECK-NEXT: vmov.16 q2[5], r1
78
- ; CHECK-NEXT: vmov.u16 r1, q0[3]
79
- ; CHECK-NEXT: vmov.16 q2[6], r1
80
- ; CHECK-NEXT: vmov.u16 r1, q1[3]
81
- ; CHECK-NEXT: vmov.16 q2[7], r1
82
- ; CHECK-NEXT: vstrb.16 q2, [r0]
33
+ ; CHECK-NEXT: vmovnt.i16 q0, q1
34
+ ; CHECK-NEXT: vstrw.32 q0, [r0]
83
35
; CHECK-NEXT: bx lr
84
36
entry:
85
37
%strided.vec = shufflevector <8 x i16 > %src1 , <8 x i16 > %src2 , <16 x i32 > <i32 0 , i32 8 , i32 1 , i32 9 , i32 2 , i32 10 , i32 3 , i32 11 , i32 4 , i32 12 , i32 5 , i32 13 , i32 6 , i32 14 , i32 7 , i32 15 >
@@ -91,40 +43,8 @@ entry:
91
43
define arm_aapcs_vfpcc void @vmovn16_trunc2 (<8 x i16 > %src1 , <8 x i16 > %src2 , <16 x i8 > *%dest ) {
92
44
; CHECK-LABEL: vmovn16_trunc2:
93
45
; CHECK: @ %bb.0: @ %entry
94
- ; CHECK-NEXT: vmov.u16 r1, q1[4]
95
- ; CHECK-NEXT: vmov.16 q2[0], r1
96
- ; CHECK-NEXT: vmov.u16 r1, q0[4]
97
- ; CHECK-NEXT: vmov.16 q2[1], r1
98
- ; CHECK-NEXT: vmov.u16 r1, q1[5]
99
- ; CHECK-NEXT: vmov.16 q2[2], r1
100
- ; CHECK-NEXT: vmov.u16 r1, q0[5]
101
- ; CHECK-NEXT: vmov.16 q2[3], r1
102
- ; CHECK-NEXT: vmov.u16 r1, q1[6]
103
- ; CHECK-NEXT: vmov.16 q2[4], r1
104
- ; CHECK-NEXT: vmov.u16 r1, q0[6]
105
- ; CHECK-NEXT: vmov.16 q2[5], r1
106
- ; CHECK-NEXT: vmov.u16 r1, q1[7]
107
- ; CHECK-NEXT: vmov.16 q2[6], r1
108
- ; CHECK-NEXT: vmov.u16 r1, q0[7]
109
- ; CHECK-NEXT: vmov.16 q2[7], r1
110
- ; CHECK-NEXT: vmov.u16 r1, q1[0]
111
- ; CHECK-NEXT: vstrb.16 q2, [r0, #8]
112
- ; CHECK-NEXT: vmov.16 q2[0], r1
113
- ; CHECK-NEXT: vmov.u16 r1, q0[0]
114
- ; CHECK-NEXT: vmov.16 q2[1], r1
115
- ; CHECK-NEXT: vmov.u16 r1, q1[1]
116
- ; CHECK-NEXT: vmov.16 q2[2], r1
117
- ; CHECK-NEXT: vmov.u16 r1, q0[1]
118
- ; CHECK-NEXT: vmov.16 q2[3], r1
119
- ; CHECK-NEXT: vmov.u16 r1, q1[2]
120
- ; CHECK-NEXT: vmov.16 q2[4], r1
121
- ; CHECK-NEXT: vmov.u16 r1, q0[2]
122
- ; CHECK-NEXT: vmov.16 q2[5], r1
123
- ; CHECK-NEXT: vmov.u16 r1, q1[3]
124
- ; CHECK-NEXT: vmov.16 q2[6], r1
125
- ; CHECK-NEXT: vmov.u16 r1, q0[3]
126
- ; CHECK-NEXT: vmov.16 q2[7], r1
127
- ; CHECK-NEXT: vstrb.16 q2, [r0]
46
+ ; CHECK-NEXT: vmovnt.i16 q1, q0
47
+ ; CHECK-NEXT: vstrw.32 q1, [r0]
128
48
; CHECK-NEXT: bx lr
129
49
entry:
130
50
%strided.vec = shufflevector <8 x i16 > %src1 , <8 x i16 > %src2 , <16 x i32 > <i32 8 , i32 0 , i32 9 , i32 1 , i32 10 , i32 2 , i32 11 , i32 3 , i32 12 , i32 4 , i32 13 , i32 5 , i32 14 , i32 6 , i32 15 , i32 7 >
0 commit comments