@@ -948,19 +948,20 @@ declare <8 x float> @llvm.x86.avx.rsqrt.ps.256(<8 x float>) nounwind readnone
948948define <2 x double > @test_x86_avx_vpermilvar_pd (<2 x double > %a0 , <2 x i64 > %a1 ) #0 {
949949; CHECK-LABEL: @test_x86_avx_vpermilvar_pd(
950950; 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
951952; 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>
953954; 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:%.* ]])
955956; CHECK-NEXT: [[TMP4:%.*]] = bitcast <2 x double> [[RES]] to <2 x i64>
956957; CHECK-NEXT: [[TMP6:%.*]] = bitcast <2 x i1> [[TMP2]] to i2
957958; 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 :
960961; CHECK-NEXT: call void @__msan_warning_noreturn()
961962; 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 ]])
964965; CHECK-NEXT: store <2 x i64> [[TMP4]], ptr @__msan_retval_tls, align 8
965966; CHECK-NEXT: ret <2 x double> [[RES1]]
966967;
@@ -973,19 +974,20 @@ declare <2 x double> @llvm.x86.avx.vpermilvar.pd(<2 x double>, <2 x i64>) nounwi
973974define <4 x double > @test_x86_avx_vpermilvar_pd_256 (<4 x double > %a0 , <4 x i64 > %a1 ) #0 {
974975; CHECK-LABEL: @test_x86_avx_vpermilvar_pd_256(
975976; 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
976978; 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>
978980; 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:%.* ]])
980982; CHECK-NEXT: [[TMP4:%.*]] = bitcast <4 x double> [[RES]] to <4 x i64>
981983; CHECK-NEXT: [[TMP6:%.*]] = bitcast <4 x i2> [[TMP2]] to i8
982984; 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 :
985987; CHECK-NEXT: call void @__msan_warning_noreturn()
986988; 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 ]])
989991; CHECK-NEXT: store <4 x i64> [[TMP4]], ptr @__msan_retval_tls, align 8
990992; CHECK-NEXT: ret <4 x double> [[RES1]]
991993;
@@ -1012,19 +1014,20 @@ define <4 x double> @test_x86_avx_vpermilvar_pd_256_2(<4 x double> %a0) #0 {
10121014define <4 x float > @test_x86_avx_vpermilvar_ps (<4 x float > %a0 , <4 x i32 > %a1 ) #0 {
10131015; CHECK-LABEL: @test_x86_avx_vpermilvar_ps(
10141016; 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
10151018; 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>
10171020; 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:%.* ]])
10191022; CHECK-NEXT: [[TMP4:%.*]] = bitcast <4 x float> [[RES]] to <4 x i32>
10201023; CHECK-NEXT: [[TMP6:%.*]] = bitcast <4 x i2> [[TMP2]] to i8
10211024; 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 :
10241027; CHECK-NEXT: call void @__msan_warning_noreturn()
10251028; 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 ]])
10281031; CHECK-NEXT: store <4 x i32> [[TMP4]], ptr @__msan_retval_tls, align 8
10291032; CHECK-NEXT: ret <4 x float> [[RES1]]
10301033;
@@ -1047,7 +1050,7 @@ define <4 x float> @test_x86_avx_vpermilvar_ps_load(<4 x float> %a0, ptr %a1) #0
10471050; CHECK-NEXT: [[TMP6:%.*]] = xor i64 [[TMP5]], 87960930222080
10481051; CHECK-NEXT: [[TMP7:%.*]] = inttoptr i64 [[TMP6]] to ptr
10491052; 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>
10511054; CHECK-NEXT: [[A0:%.*]] = bitcast <4 x i32> [[TMP2]] to <4 x float>
10521055; CHECK-NEXT: [[RES:%.*]] = call <4 x float> @llvm.x86.avx.vpermilvar.ps(<4 x float> [[A0]], <4 x i32> [[A2]])
10531056; 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
10721075define <8 x float > @test_x86_avx_vpermilvar_ps_256 (<8 x float > %a0 , <8 x i32 > %a1 ) #0 {
10731076; CHECK-LABEL: @test_x86_avx_vpermilvar_ps_256(
10741077; 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
10751079; 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>
10771081; 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:%.* ]])
10791083; CHECK-NEXT: [[TMP4:%.*]] = bitcast <8 x float> [[RES]] to <8 x i32>
10801084; CHECK-NEXT: [[TMP6:%.*]] = bitcast <8 x i3> [[TMP2]] to i24
10811085; 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 :
10841088; CHECK-NEXT: call void @__msan_warning_noreturn()
10851089; 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 ]])
10881092; CHECK-NEXT: store <8 x i32> [[TMP4]], ptr @__msan_retval_tls, align 8
10891093; CHECK-NEXT: ret <8 x float> [[RES1]]
10901094;
0 commit comments