Skip to content

Commit cfe50c1

Browse files
add explicit emitir flag in utils
1 parent d579bb2 commit cfe50c1

File tree

3 files changed

+22
-12
lines changed

3 files changed

+22
-12
lines changed

llvm/lib/Target/SPIRV/SPIRVCallLowering.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -557,10 +557,12 @@ bool SPIRVCallLowering::lowerCall(MachineIRBuilder &MIRBuilder,
557557
RetTy =
558558
TypedPointerType::get(ElemTy, PtrRetTy->getAddressSpace());
559559
}
560-
setRegClassType(ResVReg, RetTy, GR, MIRBuilder);
560+
setRegClassType(ResVReg, RetTy, GR, MIRBuilder,
561+
SPIRV::AccessQualifier::ReadWrite, true);
561562
}
562563
} else {
563-
ResVReg = createVirtualRegister(OrigRetTy, GR, MIRBuilder);
564+
ResVReg = createVirtualRegister(OrigRetTy, GR, MIRBuilder,
565+
SPIRV::AccessQualifier::ReadWrite, true);
564566
}
565567
SmallVector<Register, 8> ArgVRegs;
566568
for (auto Arg : Info.OrigArgs) {

llvm/lib/Target/SPIRV/SPIRVUtils.cpp

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -738,9 +738,12 @@ void setRegClassType(Register Reg, SPIRVType *SpvType, SPIRVGlobalRegistry *GR,
738738
// no valid assigned class, set register LLT type and class according to the
739739
// SPIR-V type.
740740
void setRegClassType(Register Reg, const Type *Ty, SPIRVGlobalRegistry *GR,
741-
MachineIRBuilder &MIRBuilder, bool Force) {
742-
setRegClassType(Reg, GR->getOrCreateSPIRVType(Ty, MIRBuilder), GR,
743-
MIRBuilder.getMRI(), MIRBuilder.getMF(), Force);
741+
MachineIRBuilder &MIRBuilder,
742+
SPIRV::AccessQualifier::AccessQualifier AccessQual,
743+
bool EmitIR, bool Force) {
744+
setRegClassType(Reg,
745+
GR->getOrCreateSPIRVType(Ty, MIRBuilder, AccessQual, EmitIR),
746+
GR, MIRBuilder.getMRI(), MIRBuilder.getMF(), Force);
744747
}
745748

746749
// Create a virtual register and assign SPIR-V type to the register. Set
@@ -764,10 +767,12 @@ Register createVirtualRegister(SPIRVType *SpvType, SPIRVGlobalRegistry *GR,
764767

765768
// Create a SPIR-V type, virtual register and assign SPIR-V type to the
766769
// register. Set register LLT type and class according to the SPIR-V type.
767-
Register createVirtualRegister(const Type *Ty, SPIRVGlobalRegistry *GR,
768-
MachineIRBuilder &MIRBuilder) {
769-
return createVirtualRegister(GR->getOrCreateSPIRVType(Ty, MIRBuilder), GR,
770-
MIRBuilder);
770+
Register createVirtualRegister(
771+
const Type *Ty, SPIRVGlobalRegistry *GR, MachineIRBuilder &MIRBuilder,
772+
SPIRV::AccessQualifier::AccessQualifier AccessQual, bool EmitIR) {
773+
return createVirtualRegister(
774+
GR->getOrCreateSPIRVType(Ty, MIRBuilder, AccessQual, EmitIR), GR,
775+
MIRBuilder);
771776
}
772777

773778
// Return true if there is an opaque pointer type nested in the argument.

llvm/lib/Target/SPIRV/SPIRVUtils.h

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -411,7 +411,9 @@ MachineInstr *getVRegDef(MachineRegisterInfo &MRI, Register Reg);
411411
bool getVacantFunctionName(Module &M, std::string &Name);
412412

413413
void setRegClassType(Register Reg, const Type *Ty, SPIRVGlobalRegistry *GR,
414-
MachineIRBuilder &MIRBuilder, bool Force = false);
414+
MachineIRBuilder &MIRBuilder,
415+
SPIRV::AccessQualifier::AccessQualifier AccessQual,
416+
bool EmitIR, bool Force = false);
415417
void setRegClassType(Register Reg, const MachineInstr *SpvType,
416418
SPIRVGlobalRegistry *GR, MachineRegisterInfo *MRI,
417419
const MachineFunction &MF, bool Force = false);
@@ -422,8 +424,9 @@ Register createVirtualRegister(const MachineInstr *SpvType,
422424
Register createVirtualRegister(const MachineInstr *SpvType,
423425
SPIRVGlobalRegistry *GR,
424426
MachineIRBuilder &MIRBuilder);
425-
Register createVirtualRegister(const Type *Ty, SPIRVGlobalRegistry *GR,
426-
MachineIRBuilder &MIRBuilder);
427+
Register createVirtualRegister(
428+
const Type *Ty, SPIRVGlobalRegistry *GR, MachineIRBuilder &MIRBuilder,
429+
SPIRV::AccessQualifier::AccessQualifier AccessQual, bool EmitIR);
427430

428431
// Return true if there is an opaque pointer type nested in the argument.
429432
bool isNestedPointer(const Type *Ty);

0 commit comments

Comments
 (0)