@@ -948,19 +948,20 @@ declare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone
948
948
define <2 x double > @test_x86_avx_vpermilvar_pd (<2 x double > %a0 , <2 x i64 > %a1 ) #0 {
949
949
; CHECK-LABEL: @test_x86_avx_vpermilvar_pd(
950
950
; CHECK-NEXT: [[TMP1:%.*]] = load <2 x i64>, ptr @__msan_param_tls, align 8
951
+ ; CHECK-NEXT: [[A1:%.*]] = load <2 x i64>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 16) to ptr), align 8
951
952
; CHECK-NEXT: call void @llvm.donothing()
952
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc <2 x i64> [[A1:%.* ]] to <2 x i1>
953
+ ; CHECK-NEXT: [[TMP2:%.*]] = trunc <2 x i64> [[A1]] to <2 x i1>
953
954
; CHECK-NEXT: [[A0:%.*]] = bitcast <2 x i64> [[TMP1]] to <2 x double>
954
- ; CHECK-NEXT: [[RES:%.*]] = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> [[A0]], <2 x i64> [[A1 ]])
955
+ ; CHECK-NEXT: [[RES:%.*]] = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> [[A0]], <2 x i64> [[A2:%.* ]])
955
956
; CHECK-NEXT: [[TMP4:%.*]] = bitcast <2 x double> [[RES]] to <2 x i64>
956
957
; CHECK-NEXT: [[TMP6:%.*]] = bitcast <2 x i1> [[TMP2]] to i2
957
958
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i2 [[TMP6]], 0
958
- ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP7 :%.*]], label [[TMP8 :%.*]], !prof [[PROF1]]
959
- ; CHECK: 7 :
959
+ ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP8 :%.*]], label [[TMP9 :%.*]], !prof [[PROF1]]
960
+ ; CHECK: 8 :
960
961
; CHECK-NEXT: call void @__msan_warning_noreturn()
961
962
; CHECK-NEXT: unreachable
962
- ; CHECK: 8 :
963
- ; CHECK-NEXT: [[RES1:%.*]] = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> [[A2 :%.*]], <2 x i64> [[A1 ]])
963
+ ; CHECK: 9 :
964
+ ; CHECK-NEXT: [[RES1:%.*]] = call <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double> [[A3 :%.*]], <2 x i64> [[A2 ]])
964
965
; CHECK-NEXT: store <2 x i64> [[TMP4]], ptr @__msan_retval_tls, align 8
965
966
; CHECK-NEXT: ret <2 x double> [[RES1]]
966
967
;
@@ -973,19 +974,20 @@ declare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwi
973
974
define <4 x double > @test_x86_avx_vpermilvar_pd_256 (<4 x double > %a0 , <4 x i64 > %a1 ) #0 {
974
975
; CHECK-LABEL: @test_x86_avx_vpermilvar_pd_256(
975
976
; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i64>, ptr @__msan_param_tls, align 8
977
+ ; CHECK-NEXT: [[A1:%.*]] = load <4 x i64>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 32) to ptr), align 8
976
978
; CHECK-NEXT: call void @llvm.donothing()
977
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc <4 x i64> [[A1:%.* ]] to <4 x i2>
979
+ ; CHECK-NEXT: [[TMP2:%.*]] = trunc <4 x i64> [[A1]] to <4 x i2>
978
980
; CHECK-NEXT: [[A0:%.*]] = bitcast <4 x i64> [[TMP1]] to <4 x double>
979
- ; CHECK-NEXT: [[RES:%.*]] = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> [[A0]], <4 x i64> [[A1 ]])
981
+ ; CHECK-NEXT: [[RES:%.*]] = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> [[A0]], <4 x i64> [[A2:%.* ]])
980
982
; CHECK-NEXT: [[TMP4:%.*]] = bitcast <4 x double> [[RES]] to <4 x i64>
981
983
; CHECK-NEXT: [[TMP6:%.*]] = bitcast <4 x i2> [[TMP2]] to i8
982
984
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i8 [[TMP6]], 0
983
- ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP7 :%.*]], label [[TMP8 :%.*]], !prof [[PROF1]]
984
- ; CHECK: 7 :
985
+ ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP8 :%.*]], label [[TMP9 :%.*]], !prof [[PROF1]]
986
+ ; CHECK: 8 :
985
987
; CHECK-NEXT: call void @__msan_warning_noreturn()
986
988
; CHECK-NEXT: unreachable
987
- ; CHECK: 8 :
988
- ; CHECK-NEXT: [[RES1:%.*]] = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> [[A2 :%.*]], <4 x i64> [[A1 ]])
989
+ ; CHECK: 9 :
990
+ ; CHECK-NEXT: [[RES1:%.*]] = call <4 x double> @llvm.x86.avx.vpermilvar.pd.256(<4 x double> [[A3 :%.*]], <4 x i64> [[A2 ]])
989
991
; CHECK-NEXT: store <4 x i64> [[TMP4]], ptr @__msan_retval_tls, align 8
990
992
; CHECK-NEXT: ret <4 x double> [[RES1]]
991
993
;
@@ -1012,19 +1014,20 @@ define <4 x double> @test_x86_avx_vpermilvar_pd_256_2(<4 x double> %a0) #0 {
1012
1014
define <4 x float > @test_x86_avx_vpermilvar_ps (<4 x float > %a0 , <4 x i32 > %a1 ) #0 {
1013
1015
; CHECK-LABEL: @test_x86_avx_vpermilvar_ps(
1014
1016
; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i32>, ptr @__msan_param_tls, align 8
1017
+ ; CHECK-NEXT: [[A1:%.*]] = load <4 x i32>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 16) to ptr), align 8
1015
1018
; CHECK-NEXT: call void @llvm.donothing()
1016
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc <4 x i32> [[A1:%.* ]] to <4 x i2>
1019
+ ; CHECK-NEXT: [[TMP2:%.*]] = trunc <4 x i32> [[A1]] to <4 x i2>
1017
1020
; CHECK-NEXT: [[A0:%.*]] = bitcast <4 x i32> [[TMP1]] to <4 x float>
1018
- ; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> [[A0]], <4 x i32> [[A1 ]])
1021
+ ; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> [[A0]], <4 x i32> [[A2:%.* ]])
1019
1022
; CHECK-NEXT: [[TMP4:%.*]] = bitcast <4 x float> [[RES]] to <4 x i32>
1020
1023
; CHECK-NEXT: [[TMP6:%.*]] = bitcast <4 x i2> [[TMP2]] to i8
1021
1024
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i8 [[TMP6]], 0
1022
- ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP7 :%.*]], label [[TMP8 :%.*]], !prof [[PROF1]]
1023
- ; CHECK: 7 :
1025
+ ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP8 :%.*]], label [[TMP9 :%.*]], !prof [[PROF1]]
1026
+ ; CHECK: 8 :
1024
1027
; CHECK-NEXT: call void @__msan_warning_noreturn()
1025
1028
; CHECK-NEXT: unreachable
1026
- ; CHECK: 8 :
1027
- ; CHECK-NEXT: [[RES1:%.*]] = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> [[A2 :%.*]], <4 x i32> [[A1 ]])
1029
+ ; CHECK: 9 :
1030
+ ; CHECK-NEXT: [[RES1:%.*]] = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> [[A3 :%.*]], <4 x i32> [[A2 ]])
1028
1031
; CHECK-NEXT: store <4 x i32> [[TMP4]], ptr @__msan_retval_tls, align 8
1029
1032
; CHECK-NEXT: ret <4 x float> [[RES1]]
1030
1033
;
@@ -1047,7 +1050,7 @@ define <4 x float> @test_x86_avx_vpermilvar_ps_load(<4 x float> %a0, ptr %a1) #0
1047
1050
; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
1048
1051
; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
1049
1052
; CHECK-NEXT: [[_MSLD:%.*]] = load <4 x i32>, ptr [[TMP7]], align 16
1050
- ; CHECK-NEXT: [[TMP8:%.*]] = trunc <4 x i32> [[A2 ]] to <4 x i2>
1053
+ ; CHECK-NEXT: [[TMP8:%.*]] = trunc <4 x i32> [[_MSLD ]] to <4 x i2>
1051
1054
; CHECK-NEXT: [[A0:%.*]] = bitcast <4 x i32> [[TMP2]] to <4 x float>
1052
1055
; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> [[A0]], <4 x i32> [[A2]])
1053
1056
; CHECK-NEXT: [[TMP10:%.*]] = bitcast <4 x float> [[RES]] to <4 x i32>
@@ -1072,19 +1075,20 @@ declare <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float>, <4 x i32>) nounwind
1072
1075
define <8 x float > @test_x86_avx_vpermilvar_ps_256 (<8 x float > %a0 , <8 x i32 > %a1 ) #0 {
1073
1076
; CHECK-LABEL: @test_x86_avx_vpermilvar_ps_256(
1074
1077
; CHECK-NEXT: [[TMP1:%.*]] = load <8 x i32>, ptr @__msan_param_tls, align 8
1078
+ ; CHECK-NEXT: [[A1:%.*]] = load <8 x i32>, ptr inttoptr (i64 add (i64 ptrtoint (ptr @__msan_param_tls to i64), i64 32) to ptr), align 8
1075
1079
; CHECK-NEXT: call void @llvm.donothing()
1076
- ; CHECK-NEXT: [[TMP2:%.*]] = trunc <8 x i32> [[A1:%.* ]] to <8 x i3>
1080
+ ; CHECK-NEXT: [[TMP2:%.*]] = trunc <8 x i32> [[A1]] to <8 x i3>
1077
1081
; CHECK-NEXT: [[A0:%.*]] = bitcast <8 x i32> [[TMP1]] to <8 x float>
1078
- ; CHECK-NEXT: [[RES:%.*]] = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> [[A0]], <8 x i32> [[A1 ]])
1082
+ ; CHECK-NEXT: [[RES:%.*]] = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> [[A0]], <8 x i32> [[A2:%.* ]])
1079
1083
; CHECK-NEXT: [[TMP4:%.*]] = bitcast <8 x float> [[RES]] to <8 x i32>
1080
1084
; CHECK-NEXT: [[TMP6:%.*]] = bitcast <8 x i3> [[TMP2]] to i24
1081
1085
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i24 [[TMP6]], 0
1082
- ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP7 :%.*]], label [[TMP8 :%.*]], !prof [[PROF1]]
1083
- ; CHECK: 7 :
1086
+ ; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP8 :%.*]], label [[TMP9 :%.*]], !prof [[PROF1]]
1087
+ ; CHECK: 8 :
1084
1088
; CHECK-NEXT: call void @__msan_warning_noreturn()
1085
1089
; CHECK-NEXT: unreachable
1086
- ; CHECK: 8 :
1087
- ; CHECK-NEXT: [[RES1:%.*]] = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> [[A2 :%.*]], <8 x i32> [[A1 ]])
1090
+ ; CHECK: 9 :
1091
+ ; CHECK-NEXT: [[RES1:%.*]] = call <8 x float> @llvm.x86.avx.vpermilvar.ps.256(<8 x float> [[A3 :%.*]], <8 x i32> [[A2 ]])
1088
1092
; CHECK-NEXT: store <8 x i32> [[TMP4]], ptr @__msan_retval_tls, align 8
1089
1093
; CHECK-NEXT: ret <8 x float> [[RES1]]
1090
1094
;
0 commit comments