@@ -64,11 +64,18 @@ define <16 x i32> @concat_sext_v8i16_v16i32(<8 x i16> %a0, <8 x i16> %a1) {
64
64
}
65
65
66
66
define <8 x i32 > @concat_sext_v4i1_v8i32 (<4 x i1 > %a0 , <4 x i1 > %a1 ) {
67
- ; CHECK-LABEL: define <8 x i32> @concat_sext_v4i1_v8i32(
68
- ; CHECK-SAME: <4 x i1> [[A0:%.*]], <4 x i1> [[A1:%.*]]) #[[ATTR0]] {
69
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i1> [[A0]], <4 x i1> [[A1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
70
- ; CHECK-NEXT: [[R:%.*]] = sext <8 x i1> [[TMP1]] to <8 x i32>
71
- ; CHECK-NEXT: ret <8 x i32> [[R]]
67
+ ; SSE-LABEL: define <8 x i32> @concat_sext_v4i1_v8i32(
68
+ ; SSE-SAME: <4 x i1> [[A0:%.*]], <4 x i1> [[A1:%.*]]) #[[ATTR0]] {
69
+ ; SSE-NEXT: [[X0:%.*]] = sext <4 x i1> [[A0]] to <4 x i32>
70
+ ; SSE-NEXT: [[X1:%.*]] = sext <4 x i1> [[A1]] to <4 x i32>
71
+ ; SSE-NEXT: [[R:%.*]] = shufflevector <4 x i32> [[X0]], <4 x i32> [[X1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
72
+ ; SSE-NEXT: ret <8 x i32> [[R]]
73
+ ;
74
+ ; AVX-LABEL: define <8 x i32> @concat_sext_v4i1_v8i32(
75
+ ; AVX-SAME: <4 x i1> [[A0:%.*]], <4 x i1> [[A1:%.*]]) #[[ATTR0]] {
76
+ ; AVX-NEXT: [[TMP1:%.*]] = shufflevector <4 x i1> [[A0]], <4 x i1> [[A1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
77
+ ; AVX-NEXT: [[R:%.*]] = sext <8 x i1> [[TMP1]] to <8 x i32>
78
+ ; AVX-NEXT: ret <8 x i32> [[R]]
72
79
;
73
80
%x0 = sext <4 x i1 > %a0 to <4 x i32 >
74
81
%x1 = sext <4 x i1 > %a1 to <4 x i32 >
@@ -90,11 +97,18 @@ define <8 x i16> @concat_trunc_v4i32_v8i16(<4 x i32> %a0, <4 x i32> %a1) {
90
97
}
91
98
92
99
define <8 x ptr > @concat_inttoptr_v4i32_v8iptr (<4 x i32 > %a0 , <4 x i32 > %a1 ) {
93
- ; CHECK-LABEL: define <8 x ptr> @concat_inttoptr_v4i32_v8iptr(
94
- ; CHECK-SAME: <4 x i32> [[A0:%.*]], <4 x i32> [[A1:%.*]]) #[[ATTR0]] {
95
- ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i32> [[A0]], <4 x i32> [[A1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
96
- ; CHECK-NEXT: [[R:%.*]] = inttoptr <8 x i32> [[TMP1]] to <8 x ptr>
97
- ; CHECK-NEXT: ret <8 x ptr> [[R]]
100
+ ; SSE-LABEL: define <8 x ptr> @concat_inttoptr_v4i32_v8iptr(
101
+ ; SSE-SAME: <4 x i32> [[A0:%.*]], <4 x i32> [[A1:%.*]]) #[[ATTR0]] {
102
+ ; SSE-NEXT: [[TMP1:%.*]] = shufflevector <4 x i32> [[A0]], <4 x i32> [[A1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
103
+ ; SSE-NEXT: [[R:%.*]] = inttoptr <8 x i32> [[TMP1]] to <8 x ptr>
104
+ ; SSE-NEXT: ret <8 x ptr> [[R]]
105
+ ;
106
+ ; AVX-LABEL: define <8 x ptr> @concat_inttoptr_v4i32_v8iptr(
107
+ ; AVX-SAME: <4 x i32> [[A0:%.*]], <4 x i32> [[A1:%.*]]) #[[ATTR0]] {
108
+ ; AVX-NEXT: [[X0:%.*]] = inttoptr <4 x i32> [[A0]] to <4 x ptr>
109
+ ; AVX-NEXT: [[X1:%.*]] = inttoptr <4 x i32> [[A1]] to <4 x ptr>
110
+ ; AVX-NEXT: [[R:%.*]] = shufflevector <4 x ptr> [[X0]], <4 x ptr> [[X1]], <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
111
+ ; AVX-NEXT: ret <8 x ptr> [[R]]
98
112
;
99
113
%x0 = inttoptr <4 x i32 > %a0 to <4 x ptr >
100
114
%x1 = inttoptr <4 x i32 > %a1 to <4 x ptr >
@@ -138,9 +152,8 @@ define <8 x double> @concat_fpext_v4f32_v8f64(<4 x float> %a0, <4 x float> %a1)
138
152
define <16 x float > @concat_fptrunc_v8f64_v16f32 (<8 x double > %a0 , <8 x double > %a1 ) {
139
153
; CHECK-LABEL: define <16 x float> @concat_fptrunc_v8f64_v16f32(
140
154
; CHECK-SAME: <8 x double> [[A0:%.*]], <8 x double> [[A1:%.*]]) #[[ATTR0]] {
141
- ; CHECK-NEXT: [[X0:%.*]] = fptrunc <8 x double> [[A0]] to <8 x float>
142
- ; CHECK-NEXT: [[X1:%.*]] = fptrunc <8 x double> [[A1]] to <8 x float>
143
- ; CHECK-NEXT: [[R:%.*]] = shufflevector <8 x float> [[X0]], <8 x float> [[X1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
155
+ ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <8 x double> [[A0]], <8 x double> [[A1]], <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
156
+ ; CHECK-NEXT: [[R:%.*]] = fptrunc <16 x double> [[TMP1]] to <16 x float>
144
157
; CHECK-NEXT: ret <16 x float> [[R]]
145
158
;
146
159
%x0 = fptrunc <8 x double > %a0 to <8 x float >
0 commit comments