@@ -38,21 +38,21 @@ declare <8 x float> @llvm.x86.avx.addsub.ps.256(<8 x float>, <8 x float>) nounwi
38
38
39
39
define <4 x double > @test_x86_avx_blendv_pd_256 (<4 x double > %a0 , <4 x double > %a1 , <4 x double > %a2 ) #0 {
40
40
; CHECK-LABEL: @test_x86_avx_blendv_pd_256(
41
- ; CHECK-NEXT: [[TMP1 :%.*]] = load <4 x i64>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 64) to ptr), align 8
41
+ ; CHECK-NEXT: [[TMP4 :%.*]] = load <4 x i64>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 64) to ptr), align 8
42
42
; CHECK-NEXT: [[TMP2:%.*]] = load <4 x i64>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 32) to ptr), align 8
43
- ; CHECK-NEXT: [[TMP3 :%.*]] = load <4 x i64>, ptr @__msan_param_tls, align 8
43
+ ; CHECK-NEXT: [[TMP12 :%.*]] = load <4 x i64>, ptr @__msan_param_tls, align 8
44
44
; CHECK-NEXT: call void @llvm.donothing()
45
- ; CHECK-NEXT: [[TMP4 :%.*]] = bitcast <4 x double> [[A2:%.*]] to <4 x i64>
46
- ; CHECK-NEXT: [[TMP5:%.*]] = ashr <4 x i64> [[TMP4 ]], splat ( i64 63)
45
+ ; CHECK-NEXT: [[TMP13 :%.*]] = bitcast <4 x double> [[A2:%.*]] to <4 x i64>
46
+ ; CHECK-NEXT: [[TMP5:%.*]] = ashr <4 x i64> [[TMP13 ]], <i64 63, i64 63, i64 63, i64 63>
47
47
; CHECK-NEXT: [[TMP6:%.*]] = trunc <4 x i64> [[TMP5]] to <4 x i1>
48
- ; CHECK-NEXT: [[TMP7:%.*]] = ashr <4 x i64> [[TMP1 ]], splat ( i64 63)
48
+ ; CHECK-NEXT: [[TMP7:%.*]] = ashr <4 x i64> [[TMP4 ]], <i64 63, i64 63, i64 63, i64 63>
49
49
; CHECK-NEXT: [[TMP8:%.*]] = trunc <4 x i64> [[TMP7]] to <4 x i1>
50
- ; CHECK-NEXT: [[TMP9:%.*]] = select <4 x i1> [[TMP6]], <4 x i64> [[TMP2]], <4 x i64> [[TMP3 ]]
50
+ ; CHECK-NEXT: [[TMP9:%.*]] = select <4 x i1> [[TMP6]], <4 x i64> [[TMP2]], <4 x i64> [[TMP12 ]]
51
51
; CHECK-NEXT: [[TMP10:%.*]] = bitcast <4 x double> [[A1:%.*]] to <4 x i64>
52
52
; CHECK-NEXT: [[TMP11:%.*]] = bitcast <4 x double> [[A0:%.*]] to <4 x i64>
53
- ; CHECK-NEXT: [[TMP12 :%.*]] = xor <4 x i64> [[TMP10]], [[TMP11]]
54
- ; CHECK-NEXT: [[TMP13 :%.*]] = or <4 x i64> [[TMP12 ]], [[TMP2]]
55
- ; CHECK-NEXT: [[TMP14:%.*]] = or <4 x i64> [[TMP13 ]], [[TMP3 ]]
53
+ ; CHECK-NEXT: [[TMP3 :%.*]] = xor <4 x i64> [[TMP10]], [[TMP11]]
54
+ ; CHECK-NEXT: [[_MSPROP :%.*]] = or <4 x i64> [[TMP3 ]], [[TMP2]]
55
+ ; CHECK-NEXT: [[TMP14:%.*]] = or <4 x i64> [[_MSPROP ]], [[TMP12 ]]
56
56
; CHECK-NEXT: [[_MSPROP_SELECT:%.*]] = select <4 x i1> [[TMP8]], <4 x i64> [[TMP14]], <4 x i64> [[TMP9]]
57
57
; CHECK-NEXT: [[RES:%.*]] = call <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double> [[A0]], <4 x double> [[A1]], <4 x double> [[A2]])
58
58
; CHECK-NEXT: store <4 x i64> [[_MSPROP_SELECT]], ptr @__msan_retval_tls, align 8
@@ -66,21 +66,21 @@ declare <4 x double> @llvm.x86.avx.blendv.pd.256(<4 x double>, <4 x double>, <4
66
66
67
67
define <8 x float > @test_x86_avx_blendv_ps_256 (<8 x float > %a0 , <8 x float > %a1 , <8 x float > %a2 ) #0 {
68
68
; CHECK-LABEL: @test_x86_avx_blendv_ps_256(
69
- ; CHECK-NEXT: [[TMP1 :%.*]] = load <8 x i32>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 64) to ptr), align 8
69
+ ; CHECK-NEXT: [[TMP4 :%.*]] = load <8 x i32>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 64) to ptr), align 8
70
70
; CHECK-NEXT: [[TMP2:%.*]] = load <8 x i32>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 32) to ptr), align 8
71
- ; CHECK-NEXT: [[TMP3 :%.*]] = load <8 x i32>, ptr @__msan_param_tls, align 8
71
+ ; CHECK-NEXT: [[TMP12 :%.*]] = load <8 x i32>, ptr @__msan_param_tls, align 8
72
72
; CHECK-NEXT: call void @llvm.donothing()
73
- ; CHECK-NEXT: [[TMP4 :%.*]] = bitcast <8 x float> [[A2:%.*]] to <8 x i32>
74
- ; CHECK-NEXT: [[TMP5:%.*]] = ashr <8 x i32> [[TMP4 ]], splat ( i32 31)
73
+ ; CHECK-NEXT: [[TMP13 :%.*]] = bitcast <8 x float> [[A2:%.*]] to <8 x i32>
74
+ ; CHECK-NEXT: [[TMP5:%.*]] = ashr <8 x i32> [[TMP13 ]], <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>
75
75
; CHECK-NEXT: [[TMP6:%.*]] = trunc <8 x i32> [[TMP5]] to <8 x i1>
76
- ; CHECK-NEXT: [[TMP7:%.*]] = ashr <8 x i32> [[TMP1 ]], splat ( i32 31)
76
+ ; CHECK-NEXT: [[TMP7:%.*]] = ashr <8 x i32> [[TMP4 ]], <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>
77
77
; CHECK-NEXT: [[TMP8:%.*]] = trunc <8 x i32> [[TMP7]] to <8 x i1>
78
- ; CHECK-NEXT: [[TMP9:%.*]] = select <8 x i1> [[TMP6]], <8 x i32> [[TMP2]], <8 x i32> [[TMP3 ]]
78
+ ; CHECK-NEXT: [[TMP9:%.*]] = select <8 x i1> [[TMP6]], <8 x i32> [[TMP2]], <8 x i32> [[TMP12 ]]
79
79
; CHECK-NEXT: [[TMP10:%.*]] = bitcast <8 x float> [[A1:%.*]] to <8 x i32>
80
80
; CHECK-NEXT: [[TMP11:%.*]] = bitcast <8 x float> [[A0:%.*]] to <8 x i32>
81
- ; CHECK-NEXT: [[TMP12 :%.*]] = xor <8 x i32> [[TMP10]], [[TMP11]]
82
- ; CHECK-NEXT: [[TMP13 :%.*]] = or <8 x i32> [[TMP12 ]], [[TMP2]]
83
- ; CHECK-NEXT: [[TMP14:%.*]] = or <8 x i32> [[TMP13 ]], [[TMP3 ]]
81
+ ; CHECK-NEXT: [[TMP3 :%.*]] = xor <8 x i32> [[TMP10]], [[TMP11]]
82
+ ; CHECK-NEXT: [[_MSPROP :%.*]] = or <8 x i32> [[TMP3 ]], [[TMP2]]
83
+ ; CHECK-NEXT: [[TMP14:%.*]] = or <8 x i32> [[_MSPROP ]], [[TMP12 ]]
84
84
; CHECK-NEXT: [[_MSPROP_SELECT:%.*]] = select <8 x i1> [[TMP8]], <8 x i32> [[TMP14]], <8 x i32> [[TMP9]]
85
85
; CHECK-NEXT: [[RES:%.*]] = call <8 x float> @llvm.x86.avx.blendv.ps.256(<8 x float> [[A0]], <8 x float> [[A1]], <8 x float> [[A2]])
86
86
; CHECK-NEXT: store <8 x i32> [[_MSPROP_SELECT]], ptr @__msan_retval_tls, align 8
@@ -499,7 +499,7 @@ define <32 x i8> @test_x86_avx_ldu_dq_256(ptr %a0) #0 {
499
499
; CHECK-NEXT: [[TMP1:%.*]] = load i64, ptr @__msan_param_tls, align 8
500
500
; CHECK-NEXT: call void @llvm.donothing()
501
501
; CHECK-NEXT: [[TMP2:%.*]] = ptrtoint ptr [[A0:%.*]] to i64
502
- ; CHECK-NEXT: [[TMP3:%.*]] = xor i64 [[TMP2]], 87960930222080
502
+ ; CHECK-NEXT: [[TMP3:%.*]] = and i64 [[TMP2]], -2147483649
503
503
; CHECK-NEXT: [[TMP4:%.*]] = inttoptr i64 [[TMP3]] to ptr
504
504
; CHECK-NEXT: [[_MSLD:%.*]] = load <32 x i8>, ptr [[TMP4]], align 1
505
505
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP1]], 0
@@ -1057,7 +1057,7 @@ define <4 x float> @test_x86_avx_vpermilvar_ps_load(<4 x float> %a0, ptr %a1) #0
1057
1057
; CHECK: 4:
1058
1058
; CHECK-NEXT: [[A2:%.*]] = load <4 x i32>, ptr [[A1:%.*]], align 16
1059
1059
; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[A1]] to i64
1060
- ; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
1060
+ ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649
1061
1061
; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
1062
1062
; CHECK-NEXT: [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP7]], align 16
1063
1063
; CHECK-NEXT: [[TMP8:%.*]] = bitcast <4 x i32> [[TMP2]] to i128
@@ -1363,8 +1363,8 @@ define void @movnt_dq(ptr %p, <2 x i64> %a1) nounwind #0 {
1363
1363
; CHECK-NEXT: [[TMP2:%.*]] = load i64, ptr @__msan_param_tls, align 8
1364
1364
; CHECK-NEXT: call void @llvm.donothing()
1365
1365
; CHECK-NEXT: [[_MSPROP:%.*]] = or <2 x i64> [[TMP1]], zeroinitializer
1366
- ; CHECK-NEXT: [[A2:%.*]] = add <2 x i64> [[A1:%.*]], splat ( i64 1)
1367
- ; CHECK-NEXT: [[_MSPROP1:%.*]] = shufflevector <2 x i64> [[_MSPROP]], <2 x i64> splat ( i64 -1) , <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
1366
+ ; CHECK-NEXT: [[A2:%.*]] = add <2 x i64> [[A1:%.*]], <i64 1, i64 1>
1367
+ ; CHECK-NEXT: [[_MSPROP1:%.*]] = shufflevector <2 x i64> [[_MSPROP]], <2 x i64> <i64 -1, i64 -1> , <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
1368
1368
; CHECK-NEXT: [[A3:%.*]] = shufflevector <2 x i64> [[A2]], <2 x i64> undef, <4 x i32> <i32 0, i32 1, i32 poison, i32 poison>
1369
1369
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i64 [[TMP2]], 0
1370
1370
; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP3:%.*]], label [[TMP4:%.*]], !prof [[PROF1]]
@@ -1373,7 +1373,7 @@ define void @movnt_dq(ptr %p, <2 x i64> %a1) nounwind #0 {
1373
1373
; CHECK-NEXT: unreachable
1374
1374
; CHECK: 4:
1375
1375
; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P:%.*]] to i64
1376
- ; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
1376
+ ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649
1377
1377
; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
1378
1378
; CHECK-NEXT: store <4 x i64> [[_MSPROP1]], ptr [[TMP7]], align 32
1379
1379
; CHECK-NEXT: store <4 x i64> [[A3]], ptr [[P]], align 32, !nontemporal [[META2:![0-9]+]]
@@ -1398,7 +1398,7 @@ define void @movnt_ps(ptr %p, <8 x float> %a) nounwind #0 {
1398
1398
; CHECK-NEXT: unreachable
1399
1399
; CHECK: 4:
1400
1400
; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P:%.*]] to i64
1401
- ; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
1401
+ ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649
1402
1402
; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
1403
1403
; CHECK-NEXT: store <8 x i32> [[TMP2]], ptr [[TMP7]], align 32
1404
1404
; CHECK-NEXT: store <8 x float> [[A:%.*]], ptr [[P]], align 32, !nontemporal [[META2]]
@@ -1424,7 +1424,7 @@ define void @movnt_pd(ptr %p, <4 x double> %a1) nounwind #0 {
1424
1424
; CHECK-NEXT: unreachable
1425
1425
; CHECK: 4:
1426
1426
; CHECK-NEXT: [[TMP5:%.*]] = ptrtoint ptr [[P:%.*]] to i64
1427
- ; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
1427
+ ; CHECK-NEXT: [[TMP6:%.*]] = and i64 [[TMP5]], -2147483649
1428
1428
; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
1429
1429
; CHECK-NEXT: store <4 x i64> [[_MSPROP]], ptr [[TMP7]], align 32
1430
1430
; CHECK-NEXT: store <4 x double> [[A2]], ptr [[P]], align 32, !nontemporal [[META2]]
0 commit comments