Skip to content

Commit 3791323

Browse files
[msan] Add support for avx_round_pd_256/avx_round_ps_256 (#119334)
Add support for avx_round_pd_256/avx_round_ps_256. This is a follow-up to #118441 Test plan: ninja check-all
1 parent a88677e commit 3791323

File tree

3 files changed

+6
-32
lines changed

3 files changed

+6
-32
lines changed

llvm/lib/Transforms/Instrumentation/MemorySanitizer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4346,6 +4346,8 @@ struct MemorySanitizerVisitor : public InstVisitor<MemorySanitizerVisitor> {
43464346
handlePclmulIntrinsic(I);
43474347
break;
43484348

4349+
case Intrinsic::x86_avx_round_pd_256:
4350+
case Intrinsic::x86_avx_round_ps_256:
43494351
case Intrinsic::x86_sse41_round_pd:
43504352
case Intrinsic::x86_sse41_round_ps:
43514353
handleRoundPdPsIntrinsic(I);

llvm/test/Instrumentation/MemorySanitizer/X86/avx-intrinsics-x86.ll

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -903,15 +903,8 @@ define <4 x double> @test_x86_avx_round_pd_256(<4 x double> %a0) #0 {
903903
; CHECK-LABEL: @test_x86_avx_round_pd_256(
904904
; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i64>, ptr @__msan_param_tls, align 8
905905
; CHECK-NEXT: call void @llvm.donothing()
906-
; CHECK-NEXT: [[TMP2:%.*]] = bitcast <4 x i64> [[TMP1]] to i256
907-
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i256 [[TMP2]], 0
908-
; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP3:%.*]], label [[TMP4:%.*]], !prof [[PROF1]]
909-
; CHECK: 3:
910-
; CHECK-NEXT: call void @__msan_warning_noreturn()
911-
; CHECK-NEXT: unreachable
912-
; CHECK: 4:
913906
; CHECK-NEXT: [[RES:%.*]] = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> [[A0:%.*]], i32 7)
914-
; CHECK-NEXT: store <4 x i64> zeroinitializer, ptr @__msan_retval_tls, align 8
907+
; CHECK-NEXT: store <4 x i64> [[TMP1]], ptr @__msan_retval_tls, align 8
915908
; CHECK-NEXT: ret <4 x double> [[RES]]
916909
;
917910
%res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 7) ; <<4 x double>> [#uses=1]
@@ -924,15 +917,8 @@ define <8 x float> @test_x86_avx_round_ps_256(<8 x float> %a0) #0 {
924917
; CHECK-LABEL: @test_x86_avx_round_ps_256(
925918
; CHECK-NEXT: [[TMP1:%.*]] = load <8 x i32>, ptr @__msan_param_tls, align 8
926919
; CHECK-NEXT: call void @llvm.donothing()
927-
; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i32> [[TMP1]] to i256
928-
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i256 [[TMP2]], 0
929-
; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP3:%.*]], label [[TMP4:%.*]], !prof [[PROF1]]
930-
; CHECK: 3:
931-
; CHECK-NEXT: call void @__msan_warning_noreturn()
932-
; CHECK-NEXT: unreachable
933-
; CHECK: 4:
934920
; CHECK-NEXT: [[RES:%.*]] = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> [[A0:%.*]], i32 7)
935-
; CHECK-NEXT: store <8 x i32> zeroinitializer, ptr @__msan_retval_tls, align 8
921+
; CHECK-NEXT: store <8 x i32> [[TMP1]], ptr @__msan_retval_tls, align 8
936922
; CHECK-NEXT: ret <8 x float> [[RES]]
937923
;
938924
%res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 7) ; <<8 x float>> [#uses=1]

llvm/test/Instrumentation/MemorySanitizer/i386/avx-intrinsics-i386.ll

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -940,15 +940,8 @@ define <4 x double> @test_x86_avx_round_pd_256(<4 x double> %a0) #0 {
940940
; CHECK-NEXT: [[TMP1:%.*]] = load <4 x i64>, ptr @__msan_param_tls, align 8
941941
; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8
942942
; CHECK-NEXT: call void @llvm.donothing()
943-
; CHECK-NEXT: [[TMP2:%.*]] = bitcast <4 x i64> [[TMP1]] to i256
944-
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i256 [[TMP2]], 0
945-
; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP6:%.*]], label [[TMP5:%.*]], !prof [[PROF1]]
946-
; CHECK: 4:
947-
; CHECK-NEXT: call void @__msan_warning_noreturn()
948-
; CHECK-NEXT: unreachable
949-
; CHECK: 5:
950943
; CHECK-NEXT: [[RES:%.*]] = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> [[A0:%.*]], i32 7)
951-
; CHECK-NEXT: store <4 x i64> zeroinitializer, ptr @__msan_retval_tls, align 8
944+
; CHECK-NEXT: store <4 x i64> [[TMP1]], ptr @__msan_retval_tls, align 8
952945
; CHECK-NEXT: ret <4 x double> [[RES]]
953946
;
954947
%res = call <4 x double> @llvm.x86.avx.round.pd.256(<4 x double> %a0, i32 7) ; <<4 x double>> [#uses=1]
@@ -962,15 +955,8 @@ define <8 x float> @test_x86_avx_round_ps_256(<8 x float> %a0) #0 {
962955
; CHECK-NEXT: [[TMP1:%.*]] = load <8 x i32>, ptr @__msan_param_tls, align 8
963956
; CHECK-NEXT: [[TMP4:%.*]] = load i64, ptr @__msan_va_arg_overflow_size_tls, align 8
964957
; CHECK-NEXT: call void @llvm.donothing()
965-
; CHECK-NEXT: [[TMP2:%.*]] = bitcast <8 x i32> [[TMP1]] to i256
966-
; CHECK-NEXT: [[_MSCMP:%.*]] = icmp ne i256 [[TMP2]], 0
967-
; CHECK-NEXT: br i1 [[_MSCMP]], label [[TMP6:%.*]], label [[TMP5:%.*]], !prof [[PROF1]]
968-
; CHECK: 4:
969-
; CHECK-NEXT: call void @__msan_warning_noreturn()
970-
; CHECK-NEXT: unreachable
971-
; CHECK: 5:
972958
; CHECK-NEXT: [[RES:%.*]] = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> [[A0:%.*]], i32 7)
973-
; CHECK-NEXT: store <8 x i32> zeroinitializer, ptr @__msan_retval_tls, align 8
959+
; CHECK-NEXT: store <8 x i32> [[TMP1]], ptr @__msan_retval_tls, align 8
974960
; CHECK-NEXT: ret <8 x float> [[RES]]
975961
;
976962
%res = call <8 x float> @llvm.x86.avx.round.ps.256(<8 x float> %a0, i32 7) ; <<8 x float>> [#uses=1]

0 commit comments

Comments
 (0)