Skip to content

Commit 7ca8f3b

Browse files
krystian-andrzejewskiigcbot
authored andcommitted
[Autobackout][FuncReg]Revert of change: 86ec39b
Small refactor for emitting sampling instructions
1 parent 9be324c commit 7ca8f3b

File tree

9 files changed

+106
-256
lines changed

9 files changed

+106
-256
lines changed

IGC/Compiler/CISACodeGen/CISABuilder.cpp

Lines changed: 40 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -2442,25 +2442,21 @@ namespace IGC
24422442
V(vKernel->CreateVISAImmediate(aoffimmi, &aoffimmiVal, ISA_TYPE_UW));
24432443
}
24442444

2445-
{
2446-
int status = vKernel->AppendVISA3dSampler(
2447-
ConvertSubOpcode(subOpcode, zeroLOD),
2448-
feedbackEnable, // pixel null mask
2449-
cpsEnable,
2450-
!nonUniformState,
2451-
predOpnd,
2452-
GetAluEMask(dst),
2453-
visaExecSize(m_encoderState.m_simdSize),
2454-
ConvertChannelMaskToVisaType(writeMask),
2455-
aoffimmi,
2456-
samplerOpnd,
2457-
btiOpnd,
2458-
dstVar,
2459-
numSources,
2460-
opndArray);
2461-
2462-
V(status);
2463-
}
2445+
V(vKernel->AppendVISA3dSampler(
2446+
ConvertSubOpcode(subOpcode, zeroLOD),
2447+
feedbackEnable, // pixel null mask
2448+
cpsEnable,
2449+
!nonUniformState,
2450+
predOpnd,
2451+
GetAluEMask(dst),
2452+
visaExecSize(m_encoderState.m_simdSize),
2453+
ConvertChannelMaskToVisaType(writeMask),
2454+
aoffimmi,
2455+
samplerOpnd,
2456+
btiOpnd,
2457+
dstVar,
2458+
numSources,
2459+
opndArray));
24642460
}
24652461

24662462
void CEncoder::Load(
@@ -2490,22 +2486,18 @@ namespace IGC
24902486

24912487
VISA_VectorOpnd* aoffimmi = GetSourceOperandNoModifier(offset);
24922488

2493-
{
2494-
int status = vKernel->AppendVISA3dLoad(
2495-
ConvertSubOpcode(subOpcode, zeroLOD),
2496-
feedbackEnable, // pixel null mask
2497-
predOpnd,
2498-
GetAluEMask(dst),
2499-
GetAluExecSize(dst),
2500-
ConvertChannelMaskToVisaType(writeMask),
2501-
aoffimmi,
2502-
surfOpnd,
2503-
dstVar,
2504-
numSources,
2505-
opndArray);
2506-
2507-
V(status);
2508-
}
2489+
V(vKernel->AppendVISA3dLoad(
2490+
ConvertSubOpcode(subOpcode, zeroLOD),
2491+
feedbackEnable, // pixel null mask
2492+
predOpnd,
2493+
GetAluEMask(dst),
2494+
GetAluExecSize(dst),
2495+
ConvertChannelMaskToVisaType(writeMask),
2496+
aoffimmi,
2497+
surfOpnd,
2498+
dstVar,
2499+
numSources,
2500+
opndArray));
25092501
}
25102502

25112503
void CEncoder::Info(EOPCODE subOpcode, uint writeMask, const ResourceDescriptor& resource, CVariable* lod, CVariable* dst)
@@ -2557,23 +2549,19 @@ namespace IGC
25572549
V(vKernel->CreateVISAImmediate(aoffimmi, &aoffimmiVal, ISA_TYPE_UW));
25582550
}
25592551

2560-
{
2561-
int status = vKernel->AppendVISA3dGather4(
2562-
ConvertSubOpcode(subOpcode, false),
2563-
feedbackEnable, // pixel null mask
2564-
predOpnd,
2565-
GetAluEMask(dst),
2566-
visaExecSize(m_encoderState.m_simdSize),
2567-
ConvertSingleSourceChannel(channel),
2568-
aoffimmi,
2569-
samplerOpnd,
2570-
surfOpnd,
2571-
dstVar,
2572-
numSources,
2573-
opndArray);
2574-
2575-
V(status);
2576-
}
2552+
V(vKernel->AppendVISA3dGather4(
2553+
ConvertSubOpcode(subOpcode, false),
2554+
feedbackEnable, // pixel null mask
2555+
predOpnd,
2556+
GetAluEMask(dst),
2557+
visaExecSize(m_encoderState.m_simdSize),
2558+
ConvertSingleSourceChannel(channel),
2559+
aoffimmi,
2560+
samplerOpnd,
2561+
surfOpnd,
2562+
dstVar,
2563+
numSources,
2564+
opndArray));
25772565
}
25782566

25792567
void CEncoder::AddrAdd(CVariable* dst, CVariable* src0, CVariable* src1)

IGC/Compiler/CISACodeGen/CISABuilder.hpp

Lines changed: 4 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -189,42 +189,10 @@ namespace IGC
189189
CVariable* CPSCounter,
190190
CVariable* sampleIndex,
191191
CVariable* r1Reg);
192-
void Sample(
193-
EOPCODE subOpcode,
194-
uint writeMask,
195-
CVariable* offset,
196-
const ResourceDescriptor& bindingTableIndex,
197-
const SamplerDescriptor& SamplerIdx,
198-
uint numSources,
199-
CVariable* dst,
200-
llvm::SmallVector<CVariable*, 4> & payload,
201-
bool zeroLOD,
202-
bool cpsEnable,
203-
bool feedbackEnable,
204-
bool nonUniformState = false);
205-
void Load(
206-
EOPCODE subOpcode,
207-
uint writeMask,
208-
CVariable* offset,
209-
const ResourceDescriptor& resource,
210-
uint numSources,
211-
CVariable* dst,
212-
llvm::SmallVector<CVariable*, 4> & payload,
213-
bool zeroLOD,
214-
bool feedbackEnable);
215-
192+
void Sample(EOPCODE subOpcode, uint writeMask, CVariable* offset, const ResourceDescriptor& bindingTableIndex, const SamplerDescriptor& SamplerIdx, uint numSources, CVariable* dst, llvm::SmallVector<CVariable*, 4> & payload, bool zeroLOD, bool cpsEnable, bool feedbackEnable, bool nonUniformState = false);
193+
void Load(EOPCODE subOpcode, uint writeMask, CVariable* offset, const ResourceDescriptor& resource, uint numSources, CVariable* dst, llvm::SmallVector<CVariable*, 4> & payload, bool zeroLOD, bool feedbackEnable);
216194
void Info(EOPCODE subOpcode, uint writeMask, const ResourceDescriptor& resource, CVariable* lod, CVariable* dst);
217-
218-
void Gather4Inst(
219-
EOPCODE subOpcode,
220-
CVariable* offset,
221-
const ResourceDescriptor& resource,
222-
const SamplerDescriptor& sampler,
223-
uint numSources,
224-
CVariable* dst,
225-
llvm::SmallVector<CVariable*, 4> & payload,
226-
uint channel,
227-
bool feedbackEnable);
195+
void Gather4Inst(EOPCODE subOpcode, CVariable* offset, const ResourceDescriptor& resource, const SamplerDescriptor& sampler, uint numSources, CVariable* dst, llvm::SmallVector<CVariable*, 4> & payload, uint channel, bool feedbackEnable);
228196

229197
void OWLoad(CVariable* dst, const ResourceDescriptor& resource, CVariable* offset, bool owordAligned, uint dstSize, uint dstOffset = 0);
230198
void OWStore(CVariable* dst, e_predefSurface surfaceType, CVariable* bufidx, CVariable* offset, uint dstSize, uint srcOffset);
@@ -927,16 +895,7 @@ namespace IGC
927895
const ResourceDescriptor& resource, uint numSources, CVariable* dst,
928896
llvm::SmallVector<CVariable*, 4> & payload, bool feedbackEnable)
929897
{
930-
Load(
931-
subOpcode,
932-
writeMask,
933-
offset,
934-
resource,
935-
numSources,
936-
dst,
937-
payload,
938-
false,
939-
feedbackEnable);
898+
Load(subOpcode, writeMask, offset, resource, numSources, dst, payload, false, feedbackEnable);
940899
}
941900

942901
inline void CEncoder::Gather(CVariable* dst, CVariable* bufId, CVariable* offset, CVariable* gOffset, e_predefSurface surface, int elementSize)

IGC/Compiler/CISACodeGen/EmitVISAPass.cpp

Lines changed: 5 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4324,16 +4324,7 @@ void EmitPass::emitLdInstruction(llvm::Instruction* inst)
43244324
{
43254325
m_encoder->SetUniformSIMDSize(m_currShader->m_Platform->getMinDispatchMode());
43264326
}
4327-
m_encoder->Load(
4328-
opCode,
4329-
writeMask,
4330-
offset,
4331-
resource,
4332-
numSources,
4333-
dst,
4334-
payload,
4335-
zeroLOD,
4336-
feedbackEnable);
4327+
m_encoder->Load(opCode, writeMask, offset, resource, numSources, dst, payload, zeroLOD, feedbackEnable);
43374328
m_encoder->Push();
43384329
if (m_currShader->hasReadWriteImage(*(inst->getParent()->getParent())))
43394330
{
@@ -7140,18 +7131,9 @@ void EmitPass::emitSampleInstruction(SampleIntrinsic* inst)
71407131
m_encoder->SetPredicate(flag);
71417132
}
71427133
m_encoder->Sample(
7143-
opCode,
7144-
writeMask,
7145-
immOffset,
7146-
resource,
7147-
sampler,
7148-
numSources,
7149-
dst,
7150-
payload,
7151-
zeroLOD,
7152-
cpsEnable,
7153-
hasMaskResponse,
7154-
needLoop);
7134+
opCode, writeMask, immOffset, resource, sampler,
7135+
numSources, dst, payload,
7136+
zeroLOD, cpsEnable, hasMaskResponse, needLoop);
71557137
m_encoder->Push();
71567138

71577139
if (m_currShader->hasReadWriteImage(*(inst->getParent()->getParent())))
@@ -7498,16 +7480,7 @@ void EmitPass::emitGather4Instruction(SamplerGatherIntrinsic* inst)
74987480
CVariable* flag = nullptr;
74997481
bool needLoop = ResourceLoopHeader(resource, sampler, flag, label);
75007482
m_encoder->SetPredicate(flag);
7501-
m_encoder->Gather4Inst(
7502-
opCode,
7503-
offset,
7504-
resource,
7505-
sampler,
7506-
numSources,
7507-
dst,
7508-
payload,
7509-
channel,
7510-
feedbackEnable);
7483+
m_encoder->Gather4Inst(opCode, offset, resource, sampler, numSources, dst, payload, channel, feedbackEnable);
75117484
m_encoder->Push();
75127485
if (m_currShader->hasReadWriteImage(*(inst->getParent()->getParent())))
75137486
{

visa/BuildCISAIRImpl.cpp

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1172,14 +1172,6 @@ bool CISA_IR_Builder::CISA_eval_sizeof_decl(int lineNum, const char *var, int64_
11721172
return false; \
11731173
} \
11741174
} while (0)
1175-
#define VISA_RESULT_CALL_TO_BOOL(FUNC_RESULT) \
1176-
do { \
1177-
int __status = FUNC_RESULT; \
1178-
if (__status != VISA_SUCCESS) { \
1179-
RecordParseError(lineNum, ""/*IGC_MANGLE(__FUNCTION__)*/, ": unknown error (internal line: ", __LINE__, ")"); \
1180-
return false; \
1181-
} \
1182-
} while (0)
11831175
// similar to above, but returns nullptr on failure.
11841176
#define VISA_CALL_TO_NULLPTR(FUNC, ...) \
11851177
do { \
@@ -2554,12 +2546,10 @@ bool CISA_IR_Builder::createSample4Instruction(
25542546
RecordParseError(lineNum, "one one of R,G,B,A may be specified for sample4 instruction");
25552547
return false;
25562548
}
2557-
int status = m_kernel->AppendVISA3dGather4(
2549+
VISA_CALL_TO_BOOL(AppendVISA3dGather4,
25582550
subOpcode, pixelNullMask, (VISA_PredOpnd*)pred, emask,
25592551
executionSize, channel.getSingleChannel(), (VISA_VectorOpnd*) aoffimmi,
2560-
sampler, surface,
2561-
(VISA_RawOpnd*) dst, numParameters, params);
2562-
VISA_RESULT_CALL_TO_BOOL(status);
2552+
sampler, surface, (VISA_RawOpnd*) dst, numParameters, params);
25632553
return true;
25642554
}
25652555

@@ -2583,11 +2573,10 @@ bool CISA_IR_Builder::create3DLoadInstruction(
25832573
return false; // error recorded
25842574

25852575
VISA_Exec_Size executionSize = Get_VISA_Exec_Size_From_Raw_Size(exec_size);
2586-
int status = m_kernel->AppendVISA3dLoad(
2576+
VISA_CALL_TO_BOOL(AppendVISA3dLoad,
25872577
subOpcode, pixelNullMask, (VISA_PredOpnd*)pred, emask,
2588-
executionSize, channels.getAPI(), (VISA_VectorOpnd*) aoffimmi, surface,
2589-
(VISA_RawOpnd*) dst, numParameters, params);
2590-
VISA_RESULT_CALL_TO_BOOL(status);
2578+
executionSize, channels.getAPI(), (VISA_VectorOpnd*) aoffimmi,
2579+
surface, (VISA_RawOpnd*)dst, numParameters, params);
25912580
return true;
25922581
}
25932582

@@ -2620,12 +2609,11 @@ bool CISA_IR_Builder::create3DSampleInstruction(
26202609

26212610
VISA_Exec_Size executionSize = Get_VISA_Exec_Size_From_Raw_Size(exec_size);
26222611

2623-
int status = m_kernel->AppendVISA3dSampler(
2612+
VISA_CALL_TO_BOOL(AppendVISA3dSampler,
26242613
subOpcode, pixelNullMask, cpsEnable, uniformSampler,
26252614
(VISA_PredOpnd*)pred, emask, executionSize, channels.getAPI(),
2626-
(VISA_VectorOpnd*)aoffimmi, sampler, surface,
2627-
(VISA_RawOpnd*)dst, numParameters, params);
2628-
VISA_RESULT_CALL_TO_BOOL(status);
2615+
(VISA_VectorOpnd*)aoffimmi,
2616+
sampler, surface, (VISA_RawOpnd*)dst, numParameters, params);
26292617
return true;
26302618
}
26312619

visa/ByteCodeReaderNG.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1665,8 +1665,7 @@ static void readInstructionSampler(unsigned& bytePos, const char* buf, ISA_Opcod
16651665
kernelBuilder->CreateVISAStateOperandHandle(surfaceHnd, container.surfaceVarDecls[surface]);
16661666
kernelBuilderImpl->CreateVISAStateOperandHandle(samplerHnd, container.samplerVarDecls[sampler]);
16671667
kernelBuilderImpl->AppendVISA3dSampler(op.opcode, op.pixelNullMask, op.cpsEnable, !op.nonUniformSampler, pred, emask, esize,
1668-
ChannelMask::createAPIFromBinary(opcode, channelMask), aoffimmi, samplerHnd, surfaceHnd,
1669-
dst, numParams, params);
1668+
ChannelMask::createAPIFromBinary(opcode, channelMask), aoffimmi, samplerHnd, surfaceHnd, dst, numParams, params);
16701669
break;
16711670
}
16721671
case ISA_3D_LOAD:
@@ -1699,8 +1698,7 @@ static void readInstructionSampler(unsigned& bytePos, const char* buf, ISA_Opcod
16991698
VISA_StateOpndHandle* surfaceHnd = NULL;
17001699
kernelBuilder->CreateVISAStateOperandHandle(surfaceHnd, container.surfaceVarDecls[surface]);
17011700
kernelBuilderImpl->AppendVISA3dLoad(op.opcode, op.pixelNullMask, pred, emask, esize,
1702-
ChannelMask::createAPIFromBinary(opcode, channelMask), aoffimmi, surfaceHnd,
1703-
dst, numParams, params);
1701+
ChannelMask::createAPIFromBinary(opcode, channelMask), aoffimmi, surfaceHnd, dst, numParams, params);
17041702
break;
17051703
}
17061704
case ISA_3D_GATHER4:
@@ -1734,8 +1732,7 @@ static void readInstructionSampler(unsigned& bytePos, const char* buf, ISA_Opcod
17341732
kernelBuilder->CreateVISAStateOperandHandle(surfaceHnd, container.surfaceVarDecls[surface]);
17351733
kernelBuilderImpl->CreateVISAStateOperandHandle(samplerHnd, container.samplerVarDecls[sampler]);
17361734
kernelBuilder->AppendVISA3dGather4(op.opcode, op.pixelNullMask, pred, emask, esize,
1737-
(VISASourceSingleChannel)channel, aoffimmi, samplerHnd, surfaceHnd,
1738-
dst, numParams, params);
1735+
(VISASourceSingleChannel)channel, aoffimmi, samplerHnd, surfaceHnd, dst, numParams, params);
17391736
break;
17401737
}
17411738
case ISA_3D_INFO:

visa/CISA.y

Lines changed: 12 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1145,47 +1145,33 @@ SampleInstruction:
11451145
$5, $6, $7, $8, CISAlineno));
11461146
}
11471147

1148-
// 1 2 3 4 5 6 7 8 9 10 11
1149-
Sample3dInstruction: Predicate SAMPLE_3D_OP PixelNullMaskEnableOpt CPSEnableOpt NonUniformSamplerEnableOpt SAMPLER_CHANNEL ExecSize VecSrcOperand_G_I_IMM Var Var RawOperand
1150-
// 12
1151-
RawOperandArray
1148+
// 1 2 3 4 5 6 7 8 9 10 11 12
1149+
Sample3dInstruction: Predicate SAMPLE_3D_OP PixelNullMaskEnableOpt CPSEnableOpt NonUniformSamplerEnableOpt SAMPLER_CHANNEL ExecSize VecSrcOperand_G_I_IMM Var Var RawOperand RawOperandArray
11521150
{
1153-
const bool success = pBuilder->create3DSampleInstruction(
1151+
ABORT_ON_FAIL(pBuilder->create3DSampleInstruction(
11541152
$1, $2, $3, $4, $5, ChannelMask::createFromAPI($6),
11551153
$7.emask, $7.exec_size, $8.cisa_gen_opnd, $9, $10,
1156-
$11, (unsigned int)$12, rawOperandArray, CISAlineno);
1157-
1158-
ABORT_ON_FAIL(success);
1154+
$11, (unsigned int)$12, rawOperandArray, CISAlineno));
11591155
}
11601156

11611157
CPSEnableOpt: %empty {$$ = false;} | CPS {$$ = true;}
11621158

11631159
NonUniformSamplerEnableOpt: %empty {$$ = false;} | NON_UNIFORM_SAMPLER {$$ = true;}
11641160

1165-
// 1 2 3 4 5 6 7 8
1166-
Load3dInstruction: Predicate LOAD_3D_OP PixelNullMaskEnableOpt SAMPLER_CHANNEL ExecSize VecSrcOperand_G_I_IMM Var RawOperand
1167-
// 9
1168-
RawOperandArray
1161+
// 1 2 3 4 5 6 7 8 9
1162+
Load3dInstruction: Predicate LOAD_3D_OP PixelNullMaskEnableOpt SAMPLER_CHANNEL ExecSize VecSrcOperand_G_I_IMM Var RawOperand RawOperandArray
11691163
{
1170-
const bool success = pBuilder->create3DLoadInstruction(
1164+
ABORT_ON_FAIL(pBuilder->create3DLoadInstruction(
11711165
$1, $2, $3, ChannelMask::createFromAPI($4),
1172-
$5.emask, $5.exec_size, $6.cisa_gen_opnd, $7,
1173-
$8, (unsigned int)$9, rawOperandArray, CISAlineno);
1174-
1175-
ABORT_ON_FAIL(success);
1166+
$5.emask, $5.exec_size, $6.cisa_gen_opnd, $7, $8, (unsigned int)$9, rawOperandArray, CISAlineno));
11761167
}
11771168

1178-
// 1 2 3 4 5 6 7 8 9
1179-
Gather43dInstruction: Predicate SAMPLE4_3D_OP PixelNullMaskEnableOpt SAMPLER_CHANNEL ExecSize VecSrcOperand_G_I_IMM Var Var RawOperand
1180-
// 10
1181-
RawOperandArray
1169+
// 1 2 3 4 5 6 7 8 9 10
1170+
Gather43dInstruction: Predicate SAMPLE4_3D_OP PixelNullMaskEnableOpt SAMPLER_CHANNEL ExecSize VecSrcOperand_G_I_IMM Var Var RawOperand RawOperandArray
11821171
{
1183-
const bool success = pBuilder->createSample4Instruction(
1172+
ABORT_ON_FAIL(pBuilder->createSample4Instruction(
11841173
$1, $2, $3, ChannelMask::createFromAPI($4), $5.emask, $5.exec_size,
1185-
$6.cisa_gen_opnd, $7, $8, $9,
1186-
(unsigned int)$10, rawOperandArray, CISAlineno);
1187-
1188-
ABORT_ON_FAIL(success);
1174+
$6.cisa_gen_opnd, $7, $8, $9, (unsigned int)$10, rawOperandArray, CISAlineno));
11891175
}
11901176

11911177
PixelNullMaskEnableOpt: %empty {$$ = false;} | PIXEL_NULL_MASK {$$ = true;}

0 commit comments

Comments
 (0)