Skip to content

Commit 0b2a0c8

Browse files
committed
Conversion of SourceLanguage
1 parent 979b372 commit 0b2a0c8

File tree

3 files changed

+56
-15
lines changed

3 files changed

+56
-15
lines changed

llvm/lib/Target/SPIRV/SPIRVEmitNonSemanticDI.cpp

Lines changed: 45 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,22 @@ enum BaseTypeAttributeEncoding {
7373
UnsignedChar = 7
7474
};
7575

76+
enum SourceLanguage {
77+
Unknown = 0,
78+
ESSL = 1,
79+
GLSL = 2,
80+
OpenCL_C = 3,
81+
OpenCL_CPP = 4,
82+
HLSL = 5,
83+
CPP_for_OpenCL = 6,
84+
SYCL = 7,
85+
HERO_C = 8,
86+
NZSL = 9,
87+
WGSL = 10,
88+
Slang = 11,
89+
Zig = 12
90+
};
91+
7692
bool SPIRVEmitNonSemanticDI::emitGlobalDI(MachineFunction &MF) {
7793
// If this MachineFunction doesn't have any BB repeat procedure
7894
// for the next
@@ -84,7 +100,7 @@ bool SPIRVEmitNonSemanticDI::emitGlobalDI(MachineFunction &MF) {
84100
// Required variables to get from metadata search
85101
LLVMContext *Context;
86102
SmallVector<SmallString<128>> FilePaths;
87-
SmallVector<int64_t> SourceLanguages;
103+
SmallVector<int64_t> LLVMSourceLanguages;
88104
int64_t DwarfVersion = 0;
89105
int64_t DebugInfoVersion = 0;
90106
SmallPtrSet<DIBasicType *, 12> BasicTypes;
@@ -104,7 +120,7 @@ bool SPIRVEmitNonSemanticDI::emitGlobalDI(MachineFunction &MF) {
104120
FilePaths.emplace_back();
105121
sys::path::append(FilePaths.back(), File->getDirectory(),
106122
File->getFilename());
107-
SourceLanguages.push_back(CompileUnit->getSourceLanguage());
123+
LLVMSourceLanguages.push_back(CompileUnit->getSourceLanguage());
108124
}
109125
}
110126
const NamedMDNode *ModuleFlags = M->getNamedMetadata("llvm.module.flags");
@@ -193,14 +209,39 @@ bool SPIRVEmitNonSemanticDI::emitGlobalDI(MachineFunction &MF) {
193209
const Register DebugInfoVersionReg =
194210
GR->buildConstantInt(DebugInfoVersion, MIRBuilder, I32Ty, false);
195211

196-
for (unsigned Idx = 0; Idx < SourceLanguages.size(); ++Idx) {
212+
for (unsigned Idx = 0; Idx < LLVMSourceLanguages.size(); ++Idx) {
197213
const Register FilePathStrReg = EmitOpString(FilePaths[Idx]);
198214

199215
const Register DebugSourceResIdReg = EmitDIInstruction(
200216
SPIRV::NonSemanticExtInst::DebugSource, {FilePathStrReg});
201217

218+
SourceLanguage SpirvSourceLanguage = SourceLanguage::Unknown;
219+
switch (LLVMSourceLanguages[Idx]) {
220+
case dwarf::DW_LANG_OpenCL:
221+
SpirvSourceLanguage = SourceLanguage::OpenCL_C;
222+
break;
223+
case dwarf::DW_LANG_OpenCL_CPP:
224+
SpirvSourceLanguage = SourceLanguage::OpenCL_CPP;
225+
break;
226+
case dwarf::DW_LANG_CPP_for_OpenCL:
227+
SpirvSourceLanguage = SourceLanguage::CPP_for_OpenCL;
228+
break;
229+
case dwarf::DW_LANG_GLSL:
230+
SpirvSourceLanguage = SourceLanguage::GLSL;
231+
break;
232+
case dwarf::DW_LANG_HLSL:
233+
SpirvSourceLanguage = SourceLanguage::HLSL;
234+
break;
235+
case dwarf::DW_LANG_SYCL:
236+
SpirvSourceLanguage = SourceLanguage::SYCL;
237+
break;
238+
case dwarf::DW_LANG_Zig:
239+
SpirvSourceLanguage = SourceLanguage::Zig;
240+
break;
241+
}
242+
202243
const Register SourceLanguageReg =
203-
GR->buildConstantInt(SourceLanguages[Idx], MIRBuilder, I32Ty, false);
244+
GR->buildConstantInt(SpirvSourceLanguage, MIRBuilder, I32Ty, false);
204245

205246
[[maybe_unused]]
206247
const Register DebugCompUnitResIdReg =

llvm/test/CodeGen/SPIRV/debug-info/debug-compilation-unit.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,26 +7,26 @@
77
; CHECK-MIR-DAG: [[type_i64:%[0-9]+\:type\(s64\)]] = OpTypeInt 32, 0
88
; CHECK-MIR-DAG: [[dwarf_version:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i64]], 5
99
; CHECK-MIR-DAG: [[debug_info_version:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i64]], 3
10-
; CHECK-MIR-DAG: [[source_language_opencl:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i64]], 21
10+
; CHECK-MIR-DAG: [[source_language_sycl:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i64]], 7
1111
; CHECK-MIR-DAG: [[source_language_cpp:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i64]], 4
12-
; CHECK-MIR-DAG: [[filename_str_opencl:%[0-9]+\:id\(s32\)]] = OpString 1094795567, 1094795585, 792805697, 1111638594, 1111638594, 1128481583, 1128481603, {{1697596227|1700545347}}, 1886216568, 1663985004, 0
12+
; CHECK-MIR-DAG: [[filename_str_sycl:%[0-9]+\:id\(s32\)]] = OpString 1094795567, 1094795585, 792805697, 1111638594, 1111638594, 1128481583, 1128481603, {{1697596227|1700545347}}, 1886216568, 1663985004, 0
1313
; CHECK-MIR-DAG: [[filename_str_cpp:%[0-9]+\:id\(s32\)]] = OpString 1145324591, 1145324612, 793003076, 1162167621, 1162167621, 1179010607, 1179010630, 1697596998, 1886216568, 774989164, 7368803
14-
; CHECK-MIR-DAG: [[debug_source_opencl:%[0-9]+\:id\(s32\)]] = OpExtInst [[type_void]], 3, 35, [[filename_str_opencl]]
15-
; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 1, [[debug_info_version]], [[dwarf_version]], [[debug_source_opencl]], [[source_language_opencl]]
14+
; CHECK-MIR-DAG: [[debug_source_sycl:%[0-9]+\:id\(s32\)]] = OpExtInst [[type_void]], 3, 35, [[filename_str_sycl]]
15+
; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 1, [[debug_info_version]], [[dwarf_version]], [[debug_source_sycl]], [[source_language_sycl]]
1616
; CHECK-MIR-DAG: [[debug_source_cpp:%[0-9]+\:id\(s32\)]] = OpExtInst [[type_void]], 3, 35, [[filename_str_cpp]]
1717
; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 1, [[debug_info_version]], [[dwarf_version]], [[debug_source_cpp]], [[source_language_cpp]]
1818

1919
; CHECK-SPIRV: [[ext_inst_non_semantic:%[0-9]+]] = OpExtInstImport "NonSemantic.Shader.DebugInfo.100"
20-
; CHECK-SPIRV: [[filename_str_opencl:%[0-9]+]] = OpString "/AAAAAAAAAA/BBBBBBBB/CCCCCCCCC{{[/\\]}}example.c"
20+
; CHECK-SPIRV: [[filename_str_sycl:%[0-9]+]] = OpString "/AAAAAAAAAA/BBBBBBBB/CCCCCCCCC{{[/\\]}}example.c"
2121
; CHECK-SPIRV: [[filename_str_cpp:%[0-9]+]] = OpString "/DDDDDDDDDD/EEEEEEEE/FFFFFFFFF{{[/\\]}}example1.cpp"
2222
; CHECK-SPIRV-DAG: [[type_void:%[0-9]+]] = OpTypeVoid
2323
; CHECK-SPIRV-DAG: [[type_i32:%[0-9]+]] = OpTypeInt 32 0
2424
; CHECK-SPIRV-DAG: [[dwarf_version:%[0-9]+]] = OpConstant [[type_i32]] 5
25-
; CHECK-SPIRV-DAG: [[source_language_opencl:%[0-9]+]] = OpConstant [[type_i32]] 21
25+
; CHECK-SPIRV-DAG: [[source_language_sycl:%[0-9]+]] = OpConstant [[type_i32]] 7
2626
; CHECK-SPIRV-DAG: [[source_language_cpp:%[0-9]+]] = OpConstant [[type_i32]] 4
2727
; CHECK-SPIRV-DAG: [[debug_info_version:%[0-9]+]] = OpConstant [[type_i32]] 3
28-
; CHECK-SPIRV: [[debug_source_opencl:%[0-9]+]] = OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugSource [[filename_str_opencl]]
29-
; CHECK-SPIRV: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugCompilationUnit [[debug_info_version]] [[dwarf_version]] [[debug_source_opencl]] [[source_language_opencl]]
28+
; CHECK-SPIRV: [[debug_source_sycl:%[0-9]+]] = OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugSource [[filename_str_sycl]]
29+
; CHECK-SPIRV: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugCompilationUnit [[debug_info_version]] [[dwarf_version]] [[debug_source_sycl]] [[source_language_sycl]]
3030
; CHECK-SPIRV: [[debug_source_cpp:%[0-9]+]] = OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugSource [[filename_str_cpp]]
3131
; CHECK-SPIRV: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugCompilationUnit [[debug_info_version]] [[dwarf_version]] [[debug_source_cpp]] [[source_language_cpp]]
3232

@@ -46,11 +46,11 @@ entry:
4646
!llvm.dbg.cu = !{!0, !6}
4747
!llvm.module.flags = !{!2, !3, !4, !5}
4848

49-
!0 = distinct !DICompileUnit(language: DW_LANG_OpenCL, file: !1, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None)
49+
!0 = distinct !DICompileUnit(language: DW_LANG_SYCL, file: !1, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None)
5050
!1 = !DIFile(filename: "example.c", directory: "/AAAAAAAAAA/BBBBBBBB/CCCCCCCCC", checksumkind: CSK_MD5, checksum: "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
5151
!2 = !{i32 7, !"Dwarf Version", i32 5}
5252
!3 = !{i32 2, !"Debug Info Version", i32 3}
5353
!4 = !{i32 1, !"wchar_size", i32 4}
5454
!5 = !{i32 7, !"frame-pointer", i32 2}
55-
!6 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !7, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None)
55+
!6 = distinct !DICompileUnit(language: DW_LANG_OpenCL_CPP, file: !7, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None)
5656
!7 = !DIFile(filename: "example1.cpp", directory: "/DDDDDDDDDD/EEEEEEEE/FFFFFFFFF", checksumkind: CSK_MD5, checksum: "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")

llvm/test/CodeGen/SPIRV/debug-info/debug-type-basic.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ entry:
163163
!llvm.dbg.cu = !{!0}
164164
!llvm.module.flags = !{!2, !3, !4, !5}
165165

166-
!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None)
166+
!0 = distinct !DICompileUnit(language: DW_LANG_Zig, file: !1, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None)
167167
!1 = !DIFile(filename: "example.cpp", directory: "/AAAAAAAAAA/BBBBBBBB/CCCCCCCCC", checksumkind: CSK_MD5, checksum: "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF")
168168
!2 = !{i32 7, !"Dwarf Version", i32 5}
169169
!3 = !{i32 2, !"Debug Info Version", i32 3}

0 commit comments

Comments
 (0)