SWDEV-95698 - Complib: set data layout string from the subtarget in codegen
This logic was broken since llvm 3.6 merge and datalayout was not set as supposed.
This results in a different compilation results with complib and llc.
In addition that leads to the suboptimal codegen.
Testing: smoke, precheckin, llc_opt, ocl_features, vec_ldst, ocl_sdk_aoc2_compare_main
Reviewed by Evgeny Mankov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#71 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/src/ocl/regression/95698/calcweight-nounroll-min.cl#1 add
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/ocl_regression.tlst#37 edit
SWDEV-93545 - HSA HLC: target option interface between complib and BE and denorm control refactoring
Global variables and associated options to control target GPU for optimizations and fp32 denorm support are removed.
Instead standard llvm -mcpu=<cpu> is used to pass chip family name and fp32 denorm is turned into a subtarget feature.
Subtarget feature can be set for llc as standard -mattr=+fp32-denormals and corresponding code to pass feature string
to the BE is added to the compiler lib, mimicing what we used to have for AMDIL.
Device name HSAIL metadata will now reflect an actual GPU family passed to the HSAIL BE instead of "generic".
Denorm support can be switched on as a feature bit in the target mapping. It is on starting from VI. However, just
switching this bit for a family will not produce denorm supporting code. The option -cl-denorms-are-zero can be used
to override this and runtime passes it for configs where CL_FP_DENORM is not reported.
Currently CL_FP_DENORM is not reported for any device, however it can be changed with AMD_GPU_FORCE_SINGLE_FP_DENORM
environment variable. If set it will be honored only starting from VI as set in the target mapping.
Implemented isFMAFasterThanFMulAndFAdd to handle use of v_fma_f32 on GFX9 instead of a direct chip family check.
Testing: smoke, precheckin
Reviewed by Evgeny Mankov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#70 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#146 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/opt_level.cpp#30 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/libUtils.cpp#18 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/libUtils.h#27 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/target_mappings.h#42 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/target_mappings_hsail.h#32 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/target_mappings_hsail64.h#27 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/BRIGAsmPrinter.cpp#155 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/BRIGAsmPrinter.h#69 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAIL.td#11 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelDAGToDAG.cpp#71 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelLowering.cpp#116 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelLowering.h#29 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILInstrInfo.cpp#42 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILInstrInfo.h#18 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILInstructions.td#22 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILKernelManager.cpp#55 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILSubtarget.cpp#14 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILSubtarget.h#15 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILTargetMachine.cpp#57 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/bin/test_driver.pl#29 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/llc_opt.tlst#97 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/ocl_features.tlst#58 edit
SWDEV-85602 - HSA HLC: serialize linking
Since we do not have build referenced symbol map now during linking we do not have to keep all library modules
in memory during the whole link process. This change serializes linking to save some memory.
Testing: smoke, precheckin
Reviewed by Evgeny Mankov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#145 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/linker/include/AMDResolveLinker.h#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/linker/lib/AMDResolveLinker.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/linker/tools/opencl-link/opencl-link.cpp#7 edit
SWDEV-85602 - switch to use of linkonce_odr for library and obsolete linkWithModule patches
The linkonce_odr linkage is set to any non-local functions in the library during library build.
Libraries are linked left to right and never back resolved. For that reason clp on the fly library
is moved to the end of the library list. Otherwise by the time clp would like to use the scalar version
of a builtin function for vector expansion this scalar function will not be available anymore.
With the linkonce_odr linkage the linker includes any referenced function from a linked in module.
That is true even for unused declarations. Therefor after every module my new code drops all unused
declarations from the composite. If we do not do it a wrapper library such as builtins-hsail would
reference all symbols from the wrapping library such as ocml and the wrapping library would be linked in
almost as a whole. Dropping unused declarations solves it.
Testing: smoke, pecheckin, conformance 2.0 with and w/o optimization
Reviewed by Nikolay Haustov, Daniil Fukalov and Evgeny Mankov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#144 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.hpp#17 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/linker/include/AMDResolveLinker.h#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/linker/lib/AMDResolveLinker.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/linker/tools/opencl-link/opencl-link.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/Linker/Linker.h#3 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Linker/LinkModules.cpp#51 edit
... //depot/stg/opencl/drivers/opencl/library/x86/common/src/amdrt/build/Makefile.amdrt#24 edit
... //depot/stg/opencl/drivers/opencl/opencldefs#169 edit
SWDEV-93545 - HSA HLC: produce v_fma_f32 instead of v_mad_f32/v_mac_f32 on GFX9 if denorms are supported
1. Added means to know HW target for HSAIL BE.
2. Simplified compiler lib logic in handling target capabilities.
3. Used target info to fuse mul/add into fma_f32 on GFX9.
Previously it was disabled because mad/mac always flush. v_fma_f32 does not flush,
but only fast starting with GFX9.
Testing: smoke, precheckin
Reviewed by Nikolay Haustov and Evgeny Mankov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#69 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#142 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/libUtils.cpp#17 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/libUtils.h#26 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAIL.h#42 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILFusion.td#29 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelDAGToDAG.cpp#70 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelLowering.cpp#115 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILInstructions.td#21 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILTargetMachine.cpp#56 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/llc_opt.tlst#95 edit
SWDEV-77584 - HSA HLC: refactoring of min/max processing and folding
1. Fixed correctness bug: if a source contains code like (x > y) ? x : y, HLC was folding
this and similar patterns to min and max instructions. The problem is with NaN handling.
Such a pattern may return NaN if one of two arguments is a NaN. All our instructions return
a number in this case, except for gcn instruction returning a qNaN if input is sNaN.
For a qNaN a number is retuned in any way. Therefor such folding is only correct if NaN handling
is disabled. Patterns are predicated to work with -cl-finite-math-only or -cl-fast-relaxed-math
which includes the former option.
NB: Performance regressions are expected in programs which do not use either of these options.
2. Compiler lib did hot handle -cl-finite-math-only. Also added handling of -cl-no-signed-zeros,
even though it does not affect code generation because there is no llvm counterpart for it.
3. Patterns for NaN agnostic comparison codes are added. We are getting these in case if finite
only math is requested.
4. Removed patterns for __hsail_min_f* and __hsail_max_f*. Instead these intrinsics are lowered
to fminnum and fmaxnum llvm operations with the same semantics. This allows to decrease the number
of patterns and simplify handling.
5. For f32 we were only producing gcn versions min and max with source patterns if gcn is enabled.
Added similar lowering to standard min/max HSAIL operations if gcn is disabled.
6. Added lowering of fmaxnum/fminnum to more efficient gcn operations if gcn is enabled.
Neither OpenCL nor LLVM IR semantics are violated by this.
7. Moved GCN media intrinsics definitions into the GCN directory.
8. Added folding of gcn f32 instructions min(max), min(min), max(max) into corresponding gcn
instructions med3, min3 and max3. This should have been helpful for color clamping.
Performance testing showed these are slow, however. T-Rex test from compubench has slowed down
by 50 times for no obvious reason. Therefor folding is disabled by default. The option -enable-gcn-mm3
is added to enable the folding for testing purposes.
Testing: smoke, precheckin, luxmark, compubench, BasemarkCL,
conformance: commonfns, bruteforce -w, relationals, select
Reviewed by Brian Sumner
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#68 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/opt_level.cpp#29 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/options.cpp#35 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/GCN/HSAILArithmetic.td#3 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/GCN/HSAILFusion.td#3 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/GCN/HSAILIntrinsics.td#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILArithmetic.td#45 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILFusion.td#28 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelDAGToDAG.cpp#68 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILISelLowering.cpp#113 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILInstrInfo.td#21 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILIntrinsics.td#70 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/src/llc/opt/minmax/minmaxf3pat.cl#1 add
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/llc_opt.tlst#93 edit
SWDEV-88670 - Required for upcoming sync of SPIRV translator
SPIRV.h removed the include from header file, but it is needed.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend_clang.cpp#28 edit
SWDEV-85602 - rename hsail-64 arch to hsail64
This is to match other existing llvm targets, such as spir64 and amdil64, as well as to match behavior of open source HSAIL BE.
For legacy users there is alias "-hsail-64" provided in the aoc2 only.
Testing: smoke, precheckin
Reviewed by Matthew Arsenault, Evgeny Mankov and Nikolay Haustov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/common/codegen.cpp#2 edit
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/common/frontend.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/utils/v0_8/target_mappings.h#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#66 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend.cpp#37 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/v0_8/target_mappings.h#37 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILTargetMachine.cpp#53 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/TargetInfo/HSAILTargetInfo.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/tools/aacl/aa.h#2 edit
... //depot/stg/opencl/drivers/opencl/compiler/tools/aoc2/aoc2.cpp#80 edit
... //depot/stg/opencl/drivers/opencl/library/hsa/amp_libm/build/Makefile.amp_libm#4 edit
... //depot/stg/opencl/drivers/opencl/library/hsa/gcn/build/Makefile.gcn#20 edit
... //depot/stg/opencl/drivers/opencl/library/hsa/gcndev/build/Makefile.gcndev#3 edit
... //depot/stg/opencl/drivers/opencl/library/hsa/hsail/build/Makefile.hsail#44 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpucompiler.cpp#153 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/gpu/gpuprogram.cpp#222 edit
... //depot/stg/opencl/drivers/opencl/runtime/device/hsa_foundation/hsacompiler.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/bin/test_driver.pl#25 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/complib.tlst#21 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/ocl_debug.tlst#9 edit
... //depot/stg/opencl/drivers/opencl/tests/hsa/tlst/ocl_regression.tlst#25 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/spir/SPIRBase.cpp#3 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/spir/SPIRVBasic.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/spir/SPIRVDropIn.cpp#5 edit
SWDEV-80173 - remove the opt level adjustment based on the function size
Since it only limits the llvm backend, but not optimizer or SC it really hurts the compile time.
A huge unoptimized hsail after inlining and no backend optimizations goes to the SC with overwhelming results.
A proper way of addressing these issues is to keep inlining reasonable.
Testing: smoke, precheckin
Reviewed by Evgeny Mankov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/codegen.cpp#65 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/IPO/AMDInline.cpp#3 edit
SWDEV-82596 - HSA HLC: Create AMDInline pass
The generic llvm inlining heuristcs do not work well for GPU.
In particular we have a common problem in several tests:
If we have a pointer to private array passed into a function it will not be optimized out, leaving scratch usage.
The pass increases the inline threshold to allow inliniting in this case.
Also that we can move at least some AMD inlining customizations into this file from the common code.
Inline hint threshold is moved in this change.
Performance impact on ocltst sha256, 32 bit, Fiji:
AMDIL HSAIL Diff HSAIL+Inliner Diff Diff
before to AMDIL to HSAIL to AMDIL
OCLPerfSHA256[ 0] 43.843 40.894 0.93 69.910 1.71 1.59
OCLPerfSHA256[ 1] 53.611 51.083 0.95 80.919 1.58 1.51
OCLPerfSHA256[ 2] 52.127 51.528 0.99 80.640 1.56 1.55
OCLPerfSHA256[ 3] 60.952 57.027 0.94 68.615 1.20 1.13
OCLPerfSHA256[ 4] 76.173 70.150 0.92 80.582 1.15 1.06
OCLPerfSHA256[ 5] 75.886 70.264 0.93 81.000 1.15 1.07
Testing: smoke, precheckin, ocltst sha256
Reviewed by Danill Fukalov
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/opt_level.cpp#28 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/InitializePasses.h#93 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/LinkAllPasses.h#49 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/Transforms/IPO.h#32 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/IPO/AMDInline.cpp#1 add
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/IPO/CMakeLists.txt#24 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/IPO/IPO.cpp#32 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/IPO/Inliner.cpp#42 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/tools/opt/amdopt.inc#28 edit
SWDEV-82054 - [CQE OCL][QR][LNX] RQ Conformance "Integer_Ops" test is crashing on CPU; Faulty CL#1206023.
In llvm32 by default llvm::DisablePrettyStackTrace is off, which causes a trap handler installed by default and interferes with the trap handler in runtime, causing unhandled SIGFPE exceptions when executing conformance/integer_ops on certain cpu.
To fix this, put stack trace duping under an env var AMD_DUMP_STACK_TRACE and set llvm::DisablePrettyStackTrace=true by default.
Here env var is used because there is still no elf binary at this stage to pass the compiler option to if_aclCompilerInit.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/common/v0_8/if_acl.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#86 edit
SWDEV-81805 - Fix compiler lib bug: incorrect type name %opencl.pipe_t0 is generated when using clang.
Clang does not return llvm::Module. It saves the bitcode to a memory buffer and passed back to compiler lib, then bitcode reader is used to get llvm::Module. Clang and bitcode reader uses the same LLVMContext which is created earlier in aclCompileInternal. Since named struct types are shared between modules in LLVMContext. When bitcode reader loads the module, name collision happens for named struct types, which causes them to be postfixed with a number, e.g. %opencl.pipe_t => %opencl.pipe_t0.
This causes failure in SPIR-V drop-in conformance test.
The fix is to let clang uses a separate LLVMContext.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend_clang.cpp#26 edit
SWDEV-67990 - SPIR-V: Fix duplicate creation of opaque types in SPIR-V/LLVM translation.
Fix mem leak in drop-in LLVM/SPIR-V translator.
Add warning for undefined function in linker.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#135 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/SPIRV/SPIRVReader.cpp#5 edit
SWDEV-80261 - Enable dump stack trace in debug build when assert/abort/segfault to facilitate debugging.
It is useful to see the stack trace when program assert(), especially in teamcity when some issues are not reproducible locally. This change enables that.
Only enabled for debug build.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/common/v0_8/if_acl.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#83 edit
SWDEV-79695 - Checkin again after fixed build issue with ocltst changes. Merged all changes in compiler lib to legacy-lib.
HSAIL Metadata Workgroup Size Hint and Vec Type Hint added to HSAIL
HSAIL does not handle kernel attributes for work_group_size_hint or vec_type_hint.
Adding these two kernel attributes to metadata requires multiple changes:
HSAIL: Added parsing functions to HSAILParseMetadata.cpp, and similar files
Properly translates to .hsail files as 'wsh' and 'vth'
MDParser: Flex scanner now reads new hsail metadata, 'wsh' and 'vth'
Acl_metadata: added the two new metadata
Uint32_t wsh[3]; // Added case: RT_WORK_GROUP_SIZE_HINT
Char *vth; // Added case: RT_VEC_TYPE_HINT
Since vth is std::string, it was required to serialize, and then de-serialize for aclMetadata
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/common/v0_8/if_acl.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/gpu/MDParser/AMDILMDInterface.h#3 integrate
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/gpu/MDParser/AMDILMDParser.l#4 integrate
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/gpu/MDParser/AMDILMDTypes.cpp#3 integrate
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/gpu/MDParser/lex.yy.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/backends/gpu/metadata.cpp#4 integrate
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/include/v0_8/aclEnums.h#4 integrate
... //depot/stg/opencl/drivers/opencl/compiler/legacy-lib/include/v0_8/aclStructs.h#4 integrate
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#81 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDInterface.h#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDParser.l#7 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDTypes.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/lex.yy.cpp#8 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/metadata.cpp#12 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclEnums.h#26 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclStructs.h#21 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILKernel.h#15 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILKernelManager.cpp#40 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILModuleInfo.cpp#18 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILParseMetadata.cpp#16 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLAssumptionCheck.cpp#47 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLEnumCheck.cpp#51 edit
SWDEV-79695 - HSAIL Metadata Workgroup Size Hint and Vec Type Hint added to HSAIL
HSAIL does not handle kernel attributes for work_group_size_hint or vec_type_hint.
Adding these two kernel attributes to metadata requires multiple changes:
HSAIL: Added parsing functions to HSAILParseMetadata.cpp, and similar files
Properly translates to .hsail files as 'wsh' and 'vth'
MDParser: Flex scanner now reads new hsail metadata, 'wsh' and 'vth'
Acl_metadata: added the two new metadata
Uint32_t wsh[3]; // Added case: RT_WORK_GROUP_SIZE_HINT
Char *vth; // Added case: RT_VEC_TYPE_HINT
Since vth is std::string, it was required to serialize, and then de-serialize for aclMetadata
TODO: Runtime changes required for the use of these two metadata:
Runtime's gpukernel.cpp requires 4 new aclQueries during HSAILKernel::Init
Runtime changes are showing issues when testing
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#79 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDInterface.h#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDParser.l#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/AMDILMDTypes.cpp#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/MDParser/lex.yy.cpp#6 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/gpu/metadata.cpp#10 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclEnums.h#24 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclStructs.h#19 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILKernel.h#13 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILKernelManager.cpp#38 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILModuleInfo.cpp#16 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Target/HSAIL/HSAILParseMetadata.cpp#14 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLAssumptionCheck.cpp#45 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLEnumCheck.cpp#49 edit
SWDEV-2 - Change OpenCL version number from 1898 to 1899.
Affected files ...
... //depot/stg/opencl/drivers/opencl/runtime/utils/versions.hpp#1645 edit
SWDEV-77584 - HSA HLC: fixed reflection metadata generation on HSAIL OCL 1.2 path
We are producing 6 extra arguments, but metadata was produced only for 3.
Removed KE_OCL12_NUM_ARGS define to avoid confusion.
Testing: smoke, precheckin
Reviewed by Yaxun Liu
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/llvm/include/llvm/AMDOpenCLKernenv.h#4 edit
... //depot/stg/opencl/drivers/opencl/compiler/llvm/lib/Transforms/Scalar/AMDInsertOpenCLKernenv.cpp#10 edit
ECR #304775 - Modify caching library code to be used by HSAIL runtime
1. Remove dependencies on shader compiler version, amd::Os and amd::option
2. Let version be one the of input
3. Change all prefix "Kernel" to prefix "String", e.g., class name is modified from KernelCache to StringCache, etc.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/cache.cpp#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/cache.hpp#5 edit
... //depot/stg/opencl/drivers/opencl/compiler/tools/caching/cache.cpp#1 branch
... //depot/stg/opencl/drivers/opencl/compiler/tools/caching/cache.hpp#1 branch
ECR #333753 - Compiler Lib: Bug 10985 - Print compiler options as comment in .cl file when dumping using -save-temps
Affects all targets.
Also fixes rare problem with dumping cl as a raw binary.
Testing: pre check-in
Reviewers: Brian Sumner, Nikolay Haustov, Matthew Arsenault
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend.cpp#36 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend.hpp#10 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend_clang.cpp#23 edit
ECR #354633 - SPIR-V: Let aoc2 load and save SPIR-V.
E.g.
aoc2 -march=hsail-64 -cl-std=CL2.0 -srctospv testReadf.cl
compile a cl to SPIR-V binary and save it as .spv
aoc2 -march=hsail-64 -cl-std=CL2.0 -spirv work_group_any.spv
load a SPIR-V binary and compiles it to ISA and save it to elf in .bin
Changed the option for round-trip translation of SPIR-V to -round-trip-spirv.
Affected files ...
... //depot/stg/opencl/drivers/opencl/compiler/lib/api/v0_8/acl.cpp#35 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/frontend_clang.cpp#22 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/linker.cpp#133 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/backends/common/v0_8/if_acl.cpp#74 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/include/v0_8/aclEnums.h#22 edit
... //depot/stg/opencl/drivers/opencl/compiler/lib/utils/OPTIONS.def#129 edit
... //depot/stg/opencl/drivers/opencl/compiler/tools/aoc2/aoc2.cpp#76 edit
... //depot/stg/opencl/drivers/opencl/tests/ocltst/module/complib/CLEnumCheck.cpp#47 edit