@@ -887,66 +887,52 @@ __m512d test_mm512_maskz_fmsubadd_round_pd(__mmask8 __U, __m512d __A, __m512d __
887
887
}
888
888
__m512d test_mm512_fmaddsub_pd (__m512d __A , __m512d __B , __m512d __C ) {
889
889
// CHECK-LABEL: @test_mm512_fmaddsub_pd
890
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
891
- // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
892
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
893
- // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
890
+ // CHECK-NOT: fneg
891
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
894
892
return _mm512_fmaddsub_pd (__A , __B , __C );
895
893
}
896
894
__m512d test_mm512_mask_fmaddsub_pd (__m512d __A , __mmask8 __U , __m512d __B , __m512d __C ) {
897
895
// CHECK-LABEL: @test_mm512_mask_fmaddsub_pd
898
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
899
- // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
900
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
901
- // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
896
+ // CHECK-NOT: fneg
897
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
902
898
// CHECK: bitcast i8 %{{.*}} to <8 x i1>
903
899
// CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
904
900
return _mm512_mask_fmaddsub_pd (__A , __U , __B , __C );
905
901
}
906
902
__m512d test_mm512_mask3_fmaddsub_pd (__m512d __A , __m512d __B , __m512d __C , __mmask8 __U ) {
907
903
// CHECK-LABEL: @test_mm512_mask3_fmaddsub_pd
908
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
909
- // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
910
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
911
- // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
904
+ // CHECK-NOT: fneg
905
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
912
906
// CHECK: bitcast i8 %{{.*}} to <8 x i1>
913
907
// CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
914
908
return _mm512_mask3_fmaddsub_pd (__A , __B , __C , __U );
915
909
}
916
910
__m512d test_mm512_maskz_fmaddsub_pd (__mmask8 __U , __m512d __A , __m512d __B , __m512d __C ) {
917
911
// CHECK-LABEL: @test_mm512_maskz_fmaddsub_pd
918
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
919
- // CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
920
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
921
- // CHECK: shufflevector <8 x double> [[SUB]], <8 x double> [[ADD]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
912
+ // CHECK-NOT: fneg
913
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}, i32 4)
922
914
// CHECK: bitcast i8 %{{.*}} to <8 x i1>
923
915
// CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
924
916
return _mm512_maskz_fmaddsub_pd (__U , __A , __B , __C );
925
917
}
926
918
__m512d test_mm512_fmsubadd_pd (__m512d __A , __m512d __B , __m512d __C ) {
927
919
// CHECK-LABEL: @test_mm512_fmsubadd_pd
928
920
// CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
929
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
930
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
931
- // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
921
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
932
922
return _mm512_fmsubadd_pd (__A , __B , __C );
933
923
}
934
924
__m512d test_mm512_mask_fmsubadd_pd (__m512d __A , __mmask8 __U , __m512d __B , __m512d __C ) {
935
925
// CHECK-LABEL: @test_mm512_mask_fmsubadd_pd
936
926
// CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
937
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
938
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
939
- // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
927
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
940
928
// CHECK: bitcast i8 %{{.*}} to <8 x i1>
941
929
// CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
942
930
return _mm512_mask_fmsubadd_pd (__A , __U , __B , __C );
943
931
}
944
932
__m512d test_mm512_maskz_fmsubadd_pd (__mmask8 __U , __m512d __A , __m512d __B , __m512d __C ) {
945
933
// CHECK-LABEL: @test_mm512_maskz_fmsubadd_pd
946
934
// CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
947
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
948
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
949
- // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
935
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
950
936
// CHECK: bitcast i8 %{{.*}} to <8 x i1>
951
937
// CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> zeroinitializer
952
938
return _mm512_maskz_fmsubadd_pd (__U , __A , __B , __C );
@@ -1001,66 +987,52 @@ __m512 test_mm512_maskz_fmsubadd_round_ps(__mmask16 __U, __m512 __A, __m512 __B,
1001
987
}
1002
988
__m512 test_mm512_fmaddsub_ps (__m512 __A , __m512 __B , __m512 __C ) {
1003
989
// CHECK-LABEL: @test_mm512_fmaddsub_ps
1004
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1005
- // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1006
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1007
- // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
990
+ // CHECK-NOT: fneg
991
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1008
992
return _mm512_fmaddsub_ps (__A , __B , __C );
1009
993
}
1010
994
__m512 test_mm512_mask_fmaddsub_ps (__m512 __A , __mmask16 __U , __m512 __B , __m512 __C ) {
1011
995
// CHECK-LABEL: @test_mm512_mask_fmaddsub_ps
1012
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1013
- // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1014
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1015
- // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
996
+ // CHECK-NOT: fneg
997
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1016
998
// CHECK: bitcast i16 %{{.*}} to <16 x i1>
1017
999
// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1018
1000
return _mm512_mask_fmaddsub_ps (__A , __U , __B , __C );
1019
1001
}
1020
1002
__m512 test_mm512_mask3_fmaddsub_ps (__m512 __A , __m512 __B , __m512 __C , __mmask16 __U ) {
1021
1003
// CHECK-LABEL: @test_mm512_mask3_fmaddsub_ps
1022
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1023
- // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1024
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1025
- // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1004
+ // CHECK-NOT: fneg
1005
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1026
1006
// CHECK: bitcast i16 %{{.*}} to <16 x i1>
1027
1007
// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1028
1008
return _mm512_mask3_fmaddsub_ps (__A , __B , __C , __U );
1029
1009
}
1030
1010
__m512 test_mm512_maskz_fmaddsub_ps (__mmask16 __U , __m512 __A , __m512 __B , __m512 __C ) {
1031
1011
// CHECK-LABEL: @test_mm512_maskz_fmaddsub_ps
1032
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1033
- // CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1034
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1035
- // CHECK: shufflevector <16 x float> [[SUB]], <16 x float> [[ADD]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1012
+ // CHECK-NOT: fneg
1013
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}, i32 4)
1036
1014
// CHECK: bitcast i16 %{{.*}} to <16 x i1>
1037
1015
// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1038
1016
return _mm512_maskz_fmaddsub_ps (__U , __A , __B , __C );
1039
1017
}
1040
1018
__m512 test_mm512_fmsubadd_ps (__m512 __A , __m512 __B , __m512 __C ) {
1041
1019
// CHECK-LABEL: @test_mm512_fmsubadd_ps
1042
1020
// CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1043
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1044
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1045
- // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1021
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1046
1022
return _mm512_fmsubadd_ps (__A , __B , __C );
1047
1023
}
1048
1024
__m512 test_mm512_mask_fmsubadd_ps (__m512 __A , __mmask16 __U , __m512 __B , __m512 __C ) {
1049
1025
// CHECK-LABEL: @test_mm512_mask_fmsubadd_ps
1050
1026
// CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1051
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1052
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1053
- // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1027
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1054
1028
// CHECK: bitcast i16 %{{.*}} to <16 x i1>
1055
1029
// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1056
1030
return _mm512_mask_fmsubadd_ps (__A , __U , __B , __C );
1057
1031
}
1058
1032
__m512 test_mm512_maskz_fmsubadd_ps (__mmask16 __U , __m512 __A , __m512 __B , __m512 __C ) {
1059
1033
// CHECK-LABEL: @test_mm512_maskz_fmsubadd_ps
1060
1034
// CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1061
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1062
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1063
- // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1035
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1064
1036
// CHECK: bitcast i16 %{{.*}} to <16 x i1>
1065
1037
// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> zeroinitializer
1066
1038
return _mm512_maskz_fmsubadd_ps (__U , __A , __B , __C );
@@ -1108,9 +1080,7 @@ __m512d test_mm512_mask3_fmsubadd_round_pd(__m512d __A, __m512d __B, __m512d __C
1108
1080
__m512d test_mm512_mask3_fmsubadd_pd (__m512d __A , __m512d __B , __m512d __C , __mmask8 __U ) {
1109
1081
// CHECK-LABEL: @test_mm512_mask3_fmsubadd_pd
1110
1082
// CHECK: [[NEG:%.+]] = fneg <8 x double> %{{.*}}
1111
- // CHECK: [[SUB:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]]
1112
- // CHECK: [[ADD:%.+]] = call <8 x double> @llvm.fma.v8f64(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}})
1113
- // CHECK: shufflevector <8 x double> [[ADD]], <8 x double> [[SUB]], <8 x i32> <i32 0, i32 9, i32 2, i32 11, i32 4, i32 13, i32 6, i32 15>
1083
+ // CHECK: call <8 x double> @llvm.x86.avx512.vfmaddsub.pd.512(<8 x double> %{{.*}}, <8 x double> %{{.*}}, <8 x double> [[NEG]], i32 4)
1114
1084
// CHECK: bitcast i8 %{{.*}} to <8 x i1>
1115
1085
// CHECK: select <8 x i1> %{{.*}}, <8 x double> %{{.*}}, <8 x double> %{{.*}}
1116
1086
return _mm512_mask3_fmsubadd_pd (__A , __B , __C , __U );
@@ -1126,9 +1096,7 @@ __m512 test_mm512_mask3_fmsubadd_round_ps(__m512 __A, __m512 __B, __m512 __C, __
1126
1096
__m512 test_mm512_mask3_fmsubadd_ps (__m512 __A , __m512 __B , __m512 __C , __mmask16 __U ) {
1127
1097
// CHECK-LABEL: @test_mm512_mask3_fmsubadd_ps
1128
1098
// CHECK: [[NEG:%.+]] = fneg <16 x float> %{{.*}}
1129
- // CHECK: [[SUB:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]]
1130
- // CHECK: [[ADD:%.+]] = call <16 x float> @llvm.fma.v16f32(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}})
1131
- // CHECK: shufflevector <16 x float> [[ADD]], <16 x float> [[SUB]], <16 x i32> <i32 0, i32 17, i32 2, i32 19, i32 4, i32 21, i32 6, i32 23, i32 8, i32 25, i32 10, i32 27, i32 12, i32 29, i32 14, i32 31>
1099
+ // CHECK: call <16 x float> @llvm.x86.avx512.vfmaddsub.ps.512(<16 x float> %{{.*}}, <16 x float> %{{.*}}, <16 x float> [[NEG]], i32 4)
1132
1100
// CHECK: bitcast i16 %{{.*}} to <16 x i1>
1133
1101
// CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
1134
1102
return _mm512_mask3_fmsubadd_ps (__A , __B , __C , __U );
0 commit comments