4
4
define <32 x i8 > @insert_extract_v32i8 (<32 x i8 > %a ) nounwind {
5
5
; CHECK-LABEL: insert_extract_v32i8:
6
6
; CHECK: # %bb.0: # %entry
7
- ; CHECK-NEXT: vpickve2gr.b $a0, $vr0, 15
8
- ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
9
- ; CHECK-NEXT: vinsgr2vr.b $vr0, $a0, 1
10
- ; CHECK-NEXT: vpickve2gr.b $a0, $vr1, 15
11
- ; CHECK-NEXT: xvori.b $xr1, $xr0, 0
12
- ; CHECK-NEXT: xvpermi.q $xr1, $xr0, 1
13
- ; CHECK-NEXT: vinsgr2vr.b $vr1, $a0, 1
14
- ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
7
+ ; CHECK-NEXT: xvextrins.b $xr0, $xr0, 31
15
8
; CHECK-NEXT: ret
16
9
entry:
17
10
%b_lo = extractelement <32 x i8 > %a , i32 15
@@ -24,14 +17,7 @@ entry:
24
17
define <16 x i16 > @insert_extract_v16i16 (<16 x i16 > %a ) nounwind {
25
18
; CHECK-LABEL: insert_extract_v16i16:
26
19
; CHECK: # %bb.0: # %entry
27
- ; CHECK-NEXT: vpickve2gr.h $a0, $vr0, 7
28
- ; CHECK-NEXT: xvpermi.d $xr1, $xr0, 14
29
- ; CHECK-NEXT: vinsgr2vr.h $vr0, $a0, 1
30
- ; CHECK-NEXT: vpickve2gr.h $a0, $vr1, 7
31
- ; CHECK-NEXT: xvori.b $xr1, $xr0, 0
32
- ; CHECK-NEXT: xvpermi.q $xr1, $xr0, 1
33
- ; CHECK-NEXT: vinsgr2vr.h $vr1, $a0, 1
34
- ; CHECK-NEXT: xvpermi.q $xr0, $xr1, 2
20
+ ; CHECK-NEXT: xvextrins.h $xr0, $xr0, 23
35
21
; CHECK-NEXT: ret
36
22
entry:
37
23
%b_lo = extractelement <16 x i16 > %a , i32 7
@@ -44,10 +30,7 @@ entry:
44
30
define <8 x i32 > @insert_extract_v8i32 (<8 x i32 > %a ) nounwind {
45
31
; CHECK-LABEL: insert_extract_v8i32:
46
32
; CHECK: # %bb.0: # %entry
47
- ; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 3
48
- ; CHECK-NEXT: xvpickve2gr.w $a1, $xr0, 7
49
- ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a0, 1
50
- ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a1, 5
33
+ ; CHECK-NEXT: xvextrins.w $xr0, $xr0, 19
51
34
; CHECK-NEXT: ret
52
35
entry:
53
36
%b_lo = extractelement <8 x i32 > %a , i32 3
@@ -60,10 +43,7 @@ entry:
60
43
define <8 x float > @insert_extract_v8f32 (<8 x float > %a ) nounwind {
61
44
; CHECK-LABEL: insert_extract_v8f32:
62
45
; CHECK: # %bb.0: # %entry
63
- ; CHECK-NEXT: xvpickve2gr.w $a0, $xr0, 3
64
- ; CHECK-NEXT: xvpickve2gr.w $a1, $xr0, 7
65
- ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a0, 1
66
- ; CHECK-NEXT: xvinsgr2vr.w $xr0, $a1, 5
46
+ ; CHECK-NEXT: xvextrins.w $xr0, $xr0, 19
67
47
; CHECK-NEXT: ret
68
48
entry:
69
49
%b_lo = extractelement <8 x float > %a , i32 3
@@ -76,10 +56,7 @@ entry:
76
56
define <4 x i64 > @insert_extract_v4i64 (<4 x i64 > %a ) nounwind {
77
57
; CHECK-LABEL: insert_extract_v4i64:
78
58
; CHECK: # %bb.0: # %entry
79
- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
80
- ; CHECK-NEXT: xvpickve2gr.d $a1, $xr0, 3
81
- ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a0, 0
82
- ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a1, 2
59
+ ; CHECK-NEXT: xvextrins.d $xr0, $xr0, 1
83
60
; CHECK-NEXT: ret
84
61
entry:
85
62
%b_lo = extractelement <4 x i64 > %a , i32 1
@@ -92,10 +69,7 @@ entry:
92
69
define <4 x double > @insert_extract_v4f64 (<4 x double > %a ) nounwind {
93
70
; CHECK-LABEL: insert_extract_v4f64:
94
71
; CHECK: # %bb.0: # %entry
95
- ; CHECK-NEXT: xvpickve2gr.d $a0, $xr0, 1
96
- ; CHECK-NEXT: xvpickve2gr.d $a1, $xr0, 3
97
- ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a0, 0
98
- ; CHECK-NEXT: xvinsgr2vr.d $xr0, $a1, 2
72
+ ; CHECK-NEXT: xvextrins.d $xr0, $xr0, 1
99
73
; CHECK-NEXT: ret
100
74
entry:
101
75
%b_lo = extractelement <4 x double > %a , i32 1
0 commit comments