@@ -931,14 +931,15 @@ bool hasNonUniformDecoration(Register Reg, const MachineRegisterInfo &MRI) {
931931 }
932932 return false ;
933933}
934- void addOpAccessChainReqs (const MachineInstr &instr,
935- SPIRV::RequirementHandler &handler,
936- const SPIRVSubtarget &subtarget) {
937- const MachineRegisterInfo &MRI = instr.getMF ()->getRegInfo ();
934+
935+ void addOpAccessChainReqs (const MachineInstr &Instr,
936+ SPIRV::RequirementHandler &Handler,
937+ const SPIRVSubtarget &Subtarget) {
938+ const MachineRegisterInfo &MRI = Instr.getMF ()->getRegInfo ();
938939 // Get the result type. If it is an image type, then the shader uses
939940 // descriptor indexing. The appropriate capabilities will be added based
940941 // on the specifics of the image.
941- Register ResTypeReg = instr .getOperand (1 ).getReg ();
942+ Register ResTypeReg = Instr .getOperand (1 ).getReg ();
942943 MachineInstr *ResTypeInst = MRI.getUniqueVRegDef (ResTypeReg);
943944
944945 assert (ResTypeInst->getOpcode () == SPIRV::OpTypePointer);
@@ -953,47 +954,48 @@ void addOpAccessChainReqs(const MachineInstr &instr,
953954 MachineInstr *PointeeType = MRI.getUniqueVRegDef (PointeeTypeReg);
954955 if (PointeeType->getOpcode () != SPIRV::OpTypeImage &&
955956 PointeeType->getOpcode () != SPIRV::OpTypeSampledImage &&
956- PointeeType->getOpcode () != SPIRV::OpTypeSampler)
957+ PointeeType->getOpcode () != SPIRV::OpTypeSampler) {
957958 return ;
959+ }
958960
959961 bool IsNonUniform =
960- hasNonUniformDecoration (instr .getOperand (0 ).getReg (), MRI);
962+ hasNonUniformDecoration (Instr .getOperand (0 ).getReg (), MRI);
961963 if (isUniformTexelBuffer (PointeeType)) {
962964 if (IsNonUniform)
963- handler .addRequirements (
965+ Handler .addRequirements (
964966 SPIRV::Capability::UniformTexelBufferArrayNonUniformIndexingEXT);
965967 else
966- handler .addRequirements (
968+ Handler .addRequirements (
967969 SPIRV::Capability::UniformTexelBufferArrayDynamicIndexingEXT);
968970 } else if (isInputAttachment (PointeeType)) {
969971 if (IsNonUniform)
970- handler .addRequirements (
972+ Handler .addRequirements (
971973 SPIRV::Capability::InputAttachmentArrayNonUniformIndexingEXT);
972974 else
973- handler .addRequirements (
975+ Handler .addRequirements (
974976 SPIRV::Capability::InputAttachmentArrayDynamicIndexingEXT);
975977 } else if (isStorageTexelBuffer (PointeeType)) {
976978 if (IsNonUniform)
977- handler .addRequirements (
979+ Handler .addRequirements (
978980 SPIRV::Capability::StorageTexelBufferArrayNonUniformIndexingEXT);
979981 else
980- handler .addRequirements (
982+ Handler .addRequirements (
981983 SPIRV::Capability::StorageTexelBufferArrayDynamicIndexingEXT);
982984 } else if (isSampledImage (PointeeType) ||
983985 isCombinedImageSampler (PointeeType) ||
984986 PointeeType->getOpcode () == SPIRV::OpTypeSampler) {
985987 if (IsNonUniform)
986- handler .addRequirements (
988+ Handler .addRequirements (
987989 SPIRV::Capability::SampledImageArrayNonUniformIndexingEXT);
988990 else
989- handler .addRequirements (
991+ Handler .addRequirements (
990992 SPIRV::Capability::SampledImageArrayDynamicIndexing);
991993 } else if (isStorageImage (PointeeType)) {
992994 if (IsNonUniform)
993- handler .addRequirements (
995+ Handler .addRequirements (
994996 SPIRV::Capability::StorageImageArrayNonUniformIndexingEXT);
995997 else
996- handler .addRequirements (
998+ Handler .addRequirements (
997999 SPIRV::Capability::StorageImageArrayDynamicIndexing);
9981000 }
9991001}
@@ -1117,14 +1119,15 @@ void addInstrRequirements(const MachineInstr &MI,
11171119 case SPIRV::OpConstantSampler:
11181120 Reqs.addCapability (SPIRV::Capability::LiteralSampler);
11191121 break ;
1122+ case SPIRV::OpInBoundsAccessChain:
11201123 case SPIRV::OpAccessChain:
11211124 addOpAccessChainReqs (MI, Reqs, ST);
11221125 break ;
11231126 case SPIRV::OpTypeImage:
11241127 addOpTypeImageReqs (MI, Reqs, ST);
11251128 break ;
11261129 case SPIRV::OpTypeSampler:
1127- if (ST.isOpenCLEnv ()) {
1130+ if (! ST.isVulkanEnv ()) {
11281131 Reqs.addCapability (SPIRV::Capability::ImageBasic);
11291132 }
11301133 break ;
0 commit comments