llvm.org GIT mirror llvm / 06052b4
Merging r360512: ------------------------------------------------------------------------ r360512 | ctopper | 2019-05-10 21:19:33 -0700 (Fri, 10 May 2019) | 5 lines [X86] Don't emit MOVNTDQA loads from fast-isel without SSE4.1. We were checking for SSE4.1 for FP types, but not integer 128-bit types. Fixes PR41837. ------------------------------------------------------------------------ git-svn-id: https://llvm.org/svn/llvm-project/llvm/branches/release_80@360749 91177308-0d34-0410-b5e6-96231b3b80d8 Tom Stellard 3 months ago
2 changed file(s) with 57 addition(s) and 17 deletion(s). Raw diff Collapse all Expand all
398398 case MVT::v2i64:
399399 case MVT::v8i16:
400400 case MVT::v16i8:
401 if (IsNonTemporal && Alignment >= 16)
401 if (IsNonTemporal && Alignment >= 16 && HasSSE41)
402402 Opc = HasVLX ? X86::VMOVNTDQAZ128rm :
403403 HasAVX ? X86::VMOVNTDQArm : X86::MOVNTDQArm;
404404 else if (Alignment >= 16)
299299 }
300300
301301 define <16 x i8> @test_load_nt16xi8(<16 x i8>* nocapture %ptr) {
302 ; SSE-LABEL: test_load_nt16xi8:
303 ; SSE: # %bb.0: # %entry
304 ; SSE-NEXT: movntdqa (%rdi), %xmm0
305 ; SSE-NEXT: retq
302 ; SSE2-LABEL: test_load_nt16xi8:
303 ; SSE2: # %bb.0: # %entry
304 ; SSE2-NEXT: movdqa (%rdi), %xmm0
305 ; SSE2-NEXT: retq
306 ;
307 ; SSE4A-LABEL: test_load_nt16xi8:
308 ; SSE4A: # %bb.0: # %entry
309 ; SSE4A-NEXT: movdqa (%rdi), %xmm0
310 ; SSE4A-NEXT: retq
311 ;
312 ; SSE41-LABEL: test_load_nt16xi8:
313 ; SSE41: # %bb.0: # %entry
314 ; SSE41-NEXT: movntdqa (%rdi), %xmm0
315 ; SSE41-NEXT: retq
306316 ;
307317 ; AVX-LABEL: test_load_nt16xi8:
308318 ; AVX: # %bb.0: # %entry
319329 }
320330
321331 define <8 x i16> @test_load_nt8xi16(<8 x i16>* nocapture %ptr) {
322 ; SSE-LABEL: test_load_nt8xi16:
323 ; SSE: # %bb.0: # %entry
324 ; SSE-NEXT: movntdqa (%rdi), %xmm0
325 ; SSE-NEXT: retq
332 ; SSE2-LABEL: test_load_nt8xi16:
333 ; SSE2: # %bb.0: # %entry
334 ; SSE2-NEXT: movdqa (%rdi), %xmm0
335 ; SSE2-NEXT: retq
336 ;
337 ; SSE4A-LABEL: test_load_nt8xi16:
338 ; SSE4A: # %bb.0: # %entry
339 ; SSE4A-NEXT: movdqa (%rdi), %xmm0
340 ; SSE4A-NEXT: retq
341 ;
342 ; SSE41-LABEL: test_load_nt8xi16:
343 ; SSE41: # %bb.0: # %entry
344 ; SSE41-NEXT: movntdqa (%rdi), %xmm0
345 ; SSE41-NEXT: retq
326346 ;
327347 ; AVX-LABEL: test_load_nt8xi16:
328348 ; AVX: # %bb.0: # %entry
339359 }
340360
341361 define <4 x i32> @test_load_nt4xi32(<4 x i32>* nocapture %ptr) {
342 ; SSE-LABEL: test_load_nt4xi32:
343 ; SSE: # %bb.0: # %entry
344 ; SSE-NEXT: movntdqa (%rdi), %xmm0
345 ; SSE-NEXT: retq
362 ; SSE2-LABEL: test_load_nt4xi32:
363 ; SSE2: # %bb.0: # %entry
364 ; SSE2-NEXT: movdqa (%rdi), %xmm0
365 ; SSE2-NEXT: retq
366 ;
367 ; SSE4A-LABEL: test_load_nt4xi32:
368 ; SSE4A: # %bb.0: # %entry
369 ; SSE4A-NEXT: movdqa (%rdi), %xmm0
370 ; SSE4A-NEXT: retq
371 ;
372 ; SSE41-LABEL: test_load_nt4xi32:
373 ; SSE41: # %bb.0: # %entry
374 ; SSE41-NEXT: movntdqa (%rdi), %xmm0
375 ; SSE41-NEXT: retq
346376 ;
347377 ; AVX-LABEL: test_load_nt4xi32:
348378 ; AVX: # %bb.0: # %entry
359389 }
360390
361391 define <2 x i64> @test_load_nt2xi64(<2 x i64>* nocapture %ptr) {
362 ; SSE-LABEL: test_load_nt2xi64:
363 ; SSE: # %bb.0: # %entry
364 ; SSE-NEXT: movntdqa (%rdi), %xmm0
365 ; SSE-NEXT: retq
392 ; SSE2-LABEL: test_load_nt2xi64:
393 ; SSE2: # %bb.0: # %entry
394 ; SSE2-NEXT: movdqa (%rdi), %xmm0
395 ; SSE2-NEXT: retq
396 ;
397 ; SSE4A-LABEL: test_load_nt2xi64:
398 ; SSE4A: # %bb.0: # %entry
399 ; SSE4A-NEXT: movdqa (%rdi), %xmm0
400 ; SSE4A-NEXT: retq
401 ;
402 ; SSE41-LABEL: test_load_nt2xi64:
403 ; SSE41: # %bb.0: # %entry
404 ; SSE41-NEXT: movntdqa (%rdi), %xmm0
405 ; SSE41-NEXT: retq
366406 ;
367407 ; AVX-LABEL: test_load_nt2xi64:
368408 ; AVX: # %bb.0: # %entry