@@ -754,11 +754,11 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
754754 llvm::Value *Dmask = EmitScalarExpr (E->getArg (0 ));
755755 llvm::Value *S = EmitScalarExpr (E->getArg (1 ));
756756 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 ;
762762
763763 SmallVector<Value *, 10 > ArgTys;
764764
@@ -788,11 +788,9 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
788788
789789 ArgTys = {Dmask, S, Slice, Rsrc, Tfe, Cpol};
790790 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) {
794793 IID = Intrinsic::amdgcn_image_load_mip_1d;
795- break ;
796794 }
797795 Call = Builder.CreateIntrinsic (RetTy, IID, ArgTys);
798796 break ;
@@ -883,6 +881,167 @@ Value *CodeGenFunction::EmitAMDGPUBuiltinExpr(unsigned BuiltinID,
883881
884882 return Call;
885883 }
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+ }
8861045 case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_16x16x128_f8f6f4:
8871046 case AMDGPU::BI__builtin_amdgcn_mfma_scale_f32_32x32x64_f8f6f4: {
8881047 llvm::FixedVectorType *VT = FixedVectorType::get (Builder.getInt32Ty (), 8 );
0 commit comments