@@ -754,11 +754,11 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
754
754
llvm::Value *Dmask = EmitScalarExpr (E->getArg (0 ));
755
755
llvm::Value *S = EmitScalarExpr (E->getArg (1 ));
756
756
llvm::Value *T = EmitScalarExpr (E->getArg (2 ));
757
- llvm::Value *Slice;
758
- llvm::Value *Mip;
759
- llvm::Value *Rsrc;
760
- llvm::Value *Tfe;
761
- llvm::Value *Cpol;
757
+ llvm::Value *Slice = nullptr ;
758
+ llvm::Value *Mip = nullptr ;
759
+ llvm::Value *Rsrc = nullptr ;
760
+ llvm::Value *Tfe = nullptr ;
761
+ llvm::Value *Cpol = nullptr ;
762
762
763
763
SmallVector<Value *, 10 > ArgTys;
764
764
@@ -788,11 +788,9 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
788
788
789
789
ArgTys = {Dmask, S, Slice, Rsrc, Tfe, Cpol};
790
790
IID = Intrinsic::amdgcn_image_load_1darray;
791
- switch (BuiltinID) {
792
- case AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f32_i32:
793
- case AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f16_i32:
791
+ if (BuiltinID == AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f32_i32 ||
792
+ BuiltinID == AMDGPU::BI__builtin_amdgcn_image_load_mip_1d_v4f16_i32) {
794
793
IID = Intrinsic::amdgcn_image_load_mip_1d;
795
- break ;
796
794
}
797
795
Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
798
796
break ;
@@ -883,6 +881,167 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
883
881
884
882
return Call;
885
883
}
884
+ case AMDGPU::BI__builtin_amdgcn_image_store_1d_v4f32_i32:
885
+ case AMDGPU::BI__builtin_amdgcn_image_store_1darray_v4f32_i32:
886
+ case AMDGPU::BI__builtin_amdgcn_image_store_1d_v4f16_i32:
887
+ case AMDGPU::BI__builtin_amdgcn_image_store_1darray_v4f16_i32:
888
+ case AMDGPU::BI__builtin_amdgcn_image_store_2d_f32_i32:
889
+ case AMDGPU::BI__builtin_amdgcn_image_store_2d_v4f32_i32:
890
+ case AMDGPU::BI__builtin_amdgcn_image_store_2d_v4f16_i32:
891
+ case AMDGPU::BI__builtin_amdgcn_image_store_2darray_f32_i32:
892
+ case AMDGPU::BI__builtin_amdgcn_image_store_2darray_v4f32_i32:
893
+ case AMDGPU::BI__builtin_amdgcn_image_store_2darray_v4f16_i32:
894
+ case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f32_i32:
895
+ case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f16_i32:
896
+ case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f32_i32:
897
+ case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f16_i32:
898
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f32_i32:
899
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f16_i32:
900
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f32_i32:
901
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f16_i32:
902
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_f32_i32:
903
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f32_i32:
904
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f16_i32:
905
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_f32_i32:
906
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_v4f32_i32:
907
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_v4f16_i32:
908
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f32_i32:
909
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f16_i32:
910
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f32_i32:
911
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f16_i32: {
912
+ llvm::Type *RetTy = VoidTy;
913
+ llvm::Value *Vdata = EmitScalarExpr (E->getArg (0 ));
914
+ llvm::Value *Dmask = EmitScalarExpr (E->getArg (1 ));
915
+ llvm::Value *S = EmitScalarExpr (E->getArg (2 ));
916
+ llvm::Value *T = EmitScalarExpr (E->getArg (3 ));
917
+ llvm::Value *Slice = nullptr ;
918
+ llvm::Value *Mip = nullptr ;
919
+ llvm::Value *Rsrc = nullptr ;
920
+ llvm::Value *Tfe = nullptr ;
921
+ llvm::Value *Cpol = nullptr ;
922
+
923
+ SmallVector<Value *, 10 > ArgTys;
924
+
925
+ Intrinsic::ID IID;
926
+ llvm::CallInst *Call;
927
+
928
+ switch (BuiltinID) {
929
+ case AMDGPU::BI__builtin_amdgcn_image_store_1d_v4f32_i32:
930
+ case AMDGPU::BI__builtin_amdgcn_image_store_1d_v4f16_i32: {
931
+ Rsrc = EmitScalarExpr (E->getArg (3 ));
932
+ Tfe = EmitScalarExpr (E->getArg (4 ));
933
+ Cpol = EmitScalarExpr (E->getArg (5 ));
934
+
935
+ ArgTys = {Vdata, Dmask, S, Rsrc, Tfe, Cpol};
936
+ IID = Intrinsic::amdgcn_image_store_1d;
937
+ Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
938
+ break ;
939
+ }
940
+ case AMDGPU::BI__builtin_amdgcn_image_store_1darray_v4f32_i32:
941
+ case AMDGPU::BI__builtin_amdgcn_image_store_1darray_v4f16_i32:
942
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f32_i32:
943
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f16_i32: {
944
+ Slice = EmitScalarExpr (E->getArg (3 ));
945
+ Rsrc = EmitScalarExpr (E->getArg (4 ));
946
+ Tfe = EmitScalarExpr (E->getArg (5 ));
947
+ Cpol = EmitScalarExpr (E->getArg (6 ));
948
+
949
+ ArgTys = {Vdata, Dmask, S, Slice, Rsrc, Tfe, Cpol};
950
+ IID = Intrinsic::amdgcn_image_store_1darray;
951
+ if (BuiltinID ==
952
+ AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f32_i32 ||
953
+ BuiltinID ==
954
+ AMDGPU::BI__builtin_amdgcn_image_store_mip_1d_v4f16_i32) {
955
+ IID = Intrinsic::amdgcn_image_store_mip_1d;
956
+ }
957
+ Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
958
+ break ;
959
+ }
960
+ case AMDGPU::BI__builtin_amdgcn_image_store_2d_f32_i32:
961
+ case AMDGPU::BI__builtin_amdgcn_image_store_2d_v4f32_i32:
962
+ case AMDGPU::BI__builtin_amdgcn_image_store_2d_v4f16_i32: {
963
+ Rsrc = EmitScalarExpr (E->getArg (4 ));
964
+ Tfe = EmitScalarExpr (E->getArg (5 ));
965
+ Cpol = EmitScalarExpr (E->getArg (6 ));
966
+
967
+ ArgTys = {Vdata, Dmask, S, T, Rsrc, Tfe, Cpol};
968
+ IID = Intrinsic::amdgcn_image_store_2d;
969
+ Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
970
+ break ;
971
+ }
972
+ case AMDGPU::BI__builtin_amdgcn_image_store_2darray_f32_i32:
973
+ case AMDGPU::BI__builtin_amdgcn_image_store_2darray_v4f32_i32:
974
+ case AMDGPU::BI__builtin_amdgcn_image_store_2darray_v4f16_i32:
975
+ case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f32_i32:
976
+ case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f16_i32:
977
+ case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f32_i32:
978
+ case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f16_i32:
979
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f32_i32:
980
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f16_i32:
981
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_f32_i32:
982
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f32_i32:
983
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f16_i32: {
984
+ Slice = EmitScalarExpr (E->getArg (4 ));
985
+ Rsrc = EmitScalarExpr (E->getArg (5 ));
986
+ Tfe = EmitScalarExpr (E->getArg (6 ));
987
+ Cpol = EmitScalarExpr (E->getArg (7 ));
988
+
989
+ ArgTys = {Vdata, Dmask, S, T, Slice, Rsrc, Tfe, Cpol};
990
+ IID = Intrinsic::amdgcn_image_store_2darray;
991
+
992
+ switch (BuiltinID) {
993
+ case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f32_i32:
994
+ case AMDGPU::BI__builtin_amdgcn_image_store_3d_v4f16_i32:
995
+ IID = Intrinsic::amdgcn_image_store_3d;
996
+ break ;
997
+ case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f32_i32:
998
+ case AMDGPU::BI__builtin_amdgcn_image_store_cube_v4f16_i32:
999
+ IID = Intrinsic::amdgcn_image_store_cube;
1000
+ break ;
1001
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f32_i32:
1002
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_1darray_v4f16_i32:
1003
+ IID = Intrinsic::amdgcn_image_store_mip_1darray;
1004
+ break ;
1005
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_f32_i32:
1006
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f32_i32:
1007
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2d_v4f16_i32:
1008
+ IID = Intrinsic::amdgcn_image_store_mip_2d;
1009
+ break ;
1010
+ }
1011
+ Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
1012
+ break ;
1013
+ }
1014
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_f32_i32:
1015
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_v4f32_i32:
1016
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_2darray_v4f16_i32:
1017
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f32_i32:
1018
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f16_i32:
1019
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f32_i32:
1020
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f16_i32: {
1021
+ Slice = EmitScalarExpr (E->getArg (4 ));
1022
+ Mip = EmitScalarExpr (E->getArg (5 ));
1023
+ Rsrc = EmitScalarExpr (E->getArg (6 ));
1024
+ Tfe = EmitScalarExpr (E->getArg (7 ));
1025
+ Cpol = EmitScalarExpr (E->getArg (8 ));
1026
+
1027
+ ArgTys = {Vdata, Dmask, S, T, Slice, Mip, Rsrc, Tfe, Cpol};
1028
+ IID = Intrinsic::amdgcn_image_store_mip_2darray;
1029
+ switch (BuiltinID) {
1030
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f32_i32:
1031
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_3d_v4f16_i32:
1032
+ IID = Intrinsic::amdgcn_image_store_mip_3d;
1033
+ break ;
1034
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f32_i32:
1035
+ case AMDGPU::BI__builtin_amdgcn_image_store_mip_cube_v4f16_i32:
1036
+ IID = Intrinsic::amdgcn_image_store_mip_cube;
1037
+ break ;
1038
+ }
1039
+ Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
1040
+ break ;
1041
+ }
1042
+ }
1043
+ return Call;
1044
+ }
886
1045
case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_16x16x128_f8f6f4:
887
1046
case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_32x32x64_f8f6f4: {
888
1047
llvm::FixedVectorType *VT = FixedVectorType::get (Builder.getInt32Ty (), 8 );
0 commit comments