@@ -149,8 +149,7 @@ define <1 x i64> @atomic_vec1_i64_align(ptr %x) nounwind {
149
149
define <2 x i8 > @atomic_vec2_i8 (ptr %x ) {
150
150
; CHECK3-LABEL: atomic_vec2_i8:
151
151
; CHECK3: ## %bb.0:
152
- ; CHECK3-NEXT: movzwl (%rdi), %eax
153
- ; CHECK3-NEXT: movd %eax, %xmm0
152
+ ; CHECK3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
154
153
; CHECK3-NEXT: retq
155
154
;
156
155
; CHECK0-LABEL: atomic_vec2_i8:
@@ -165,20 +164,23 @@ define <2 x i8> @atomic_vec2_i8(ptr %x) {
165
164
}
166
165
167
166
define <2 x i16 > @atomic_vec2_i16 (ptr %x ) {
168
- ; CHECK-LABEL: atomic_vec2_i16:
169
- ; CHECK: ## %bb.0:
170
- ; CHECK-NEXT: movl (%rdi), %eax
171
- ; CHECK-NEXT: movd %eax, %xmm0
172
- ; CHECK-NEXT: retq
167
+ ; CHECK3-LABEL: atomic_vec2_i16:
168
+ ; CHECK3: ## %bb.0:
169
+ ; CHECK3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
170
+ ; CHECK3-NEXT: retq
171
+ ;
172
+ ; CHECK0-LABEL: atomic_vec2_i16:
173
+ ; CHECK0: ## %bb.0:
174
+ ; CHECK0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
175
+ ; CHECK0-NEXT: retq
173
176
%ret = load atomic <2 x i16 >, ptr %x acquire , align 4
174
177
ret <2 x i16 > %ret
175
178
}
176
179
177
180
define <2 x ptr addrspace (270 )> @atomic_vec2_ptr270 (ptr %x ) {
178
181
; CHECK-LABEL: atomic_vec2_ptr270:
179
182
; CHECK: ## %bb.0:
180
- ; CHECK-NEXT: movq (%rdi), %rax
181
- ; CHECK-NEXT: movq %rax, %xmm0
183
+ ; CHECK-NEXT: movq (%rdi), %xmm0
182
184
; CHECK-NEXT: retq
183
185
%ret = load atomic <2 x ptr addrspace (270 )>, ptr %x acquire , align 8
184
186
ret <2 x ptr addrspace (270 )> %ret
@@ -187,8 +189,7 @@ define <2 x ptr addrspace(270)> @atomic_vec2_ptr270(ptr %x) {
187
189
define <2 x i32 > @atomic_vec2_i32_align (ptr %x ) {
188
190
; CHECK-LABEL: atomic_vec2_i32_align:
189
191
; CHECK: ## %bb.0:
190
- ; CHECK-NEXT: movq (%rdi), %rax
191
- ; CHECK-NEXT: movq %rax, %xmm0
192
+ ; CHECK-NEXT: movq (%rdi), %xmm0
192
193
; CHECK-NEXT: retq
193
194
%ret = load atomic <2 x i32 >, ptr %x acquire , align 8
194
195
ret <2 x i32 > %ret
@@ -197,8 +198,7 @@ define <2 x i32> @atomic_vec2_i32_align(ptr %x) {
197
198
define <2 x float > @atomic_vec2_float_align (ptr %x ) {
198
199
; CHECK-LABEL: atomic_vec2_float_align:
199
200
; CHECK: ## %bb.0:
200
- ; CHECK-NEXT: movq (%rdi), %rax
201
- ; CHECK-NEXT: movq %rax, %xmm0
201
+ ; CHECK-NEXT: movq (%rdi), %xmm0
202
202
; CHECK-NEXT: retq
203
203
%ret = load atomic <2 x float >, ptr %x acquire , align 8
204
204
ret <2 x float > %ret
@@ -354,20 +354,23 @@ define <2 x i32> @atomic_vec2_i32(ptr %x) nounwind {
354
354
}
355
355
356
356
define <4 x i8 > @atomic_vec4_i8 (ptr %x ) nounwind {
357
- ; CHECK-LABEL: atomic_vec4_i8:
358
- ; CHECK: ## %bb.0:
359
- ; CHECK-NEXT: movl (%rdi), %eax
360
- ; CHECK-NEXT: movd %eax, %xmm0
361
- ; CHECK-NEXT: retq
357
+ ; CHECK3-LABEL: atomic_vec4_i8:
358
+ ; CHECK3: ## %bb.0:
359
+ ; CHECK3-NEXT: movss {{.*#+}} xmm0 = mem[0],zero,zero,zero
360
+ ; CHECK3-NEXT: retq
361
+ ;
362
+ ; CHECK0-LABEL: atomic_vec4_i8:
363
+ ; CHECK0: ## %bb.0:
364
+ ; CHECK0-NEXT: movd {{.*#+}} xmm0 = mem[0],zero,zero,zero
365
+ ; CHECK0-NEXT: retq
362
366
%ret = load atomic <4 x i8 >, ptr %x acquire , align 4
363
367
ret <4 x i8 > %ret
364
368
}
365
369
366
370
define <4 x i16 > @atomic_vec4_i16 (ptr %x ) nounwind {
367
371
; CHECK-LABEL: atomic_vec4_i16:
368
372
; CHECK: ## %bb.0:
369
- ; CHECK-NEXT: movq (%rdi), %rax
370
- ; CHECK-NEXT: movq %rax, %xmm0
373
+ ; CHECK-NEXT: movq (%rdi), %xmm0
371
374
; CHECK-NEXT: retq
372
375
%ret = load atomic <4 x i16 >, ptr %x acquire , align 8
373
376
ret <4 x i16 > %ret
0 commit comments