Skip to content

Commit 2b13ac2

Browse files
committed
Get dxil version from subarch.
1 parent d9353d1 commit 2b13ac2

File tree

1 file changed

+37
-3
lines changed

1 file changed

+37
-3
lines changed

llvm/lib/Target/DirectX/DXILMetadata.cpp

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,13 +82,47 @@ void dxil::createShaderModelMD(Module &M) {
8282
}
8383

8484
void dxil::createDXILVersionMD(Module &M) {
85-
Triple TT(M.getTargetTriple());
86-
VersionTuple Ver = TT.getOSVersion();
85+
Triple TT(Triple::normalize(M.getTargetTriple()));
86+
VersionTuple Ver = VersionTuple(1, 0);
87+
switch (TT.getSubArch()) {
88+
case Triple::DXILSubArch_v1_0:
89+
Ver = VersionTuple(1, 0);
90+
break;
91+
case Triple::DXILSubArch_v1_1:
92+
Ver = VersionTuple(1, 1);
93+
break;
94+
case Triple::DXILSubArch_v1_2:
95+
Ver = VersionTuple(1, 2);
96+
break;
97+
case Triple::DXILSubArch_v1_3:
98+
Ver = VersionTuple(1, 3);
99+
break;
100+
case Triple::DXILSubArch_v1_4:
101+
Ver = VersionTuple(1, 4);
102+
break;
103+
case Triple::DXILSubArch_v1_5:
104+
Ver = VersionTuple(1, 5);
105+
break;
106+
case Triple::DXILSubArch_v1_6:
107+
Ver = VersionTuple(1, 6);
108+
break;
109+
case Triple::DXILSubArch_v1_7:
110+
Ver = VersionTuple(1, 7);
111+
break;
112+
case Triple::DXILSubArch_v1_8:
113+
Ver = VersionTuple(1, 8);
114+
break;
115+
case Triple::NoSubArch:
116+
break;
117+
default:
118+
llvm_unreachable("Unsupported subarch for DXIL generation.");
119+
break;
120+
}
87121
LLVMContext &Ctx = M.getContext();
88122
IRBuilder<> B(Ctx);
89123
NamedMDNode *Entry = M.getOrInsertNamedMetadata("dx.version");
90124
Metadata *Vals[2];
91-
Vals[0] = ConstantAsMetadata::get(B.getInt32(1));
125+
Vals[0] = ConstantAsMetadata::get(B.getInt32(Ver.getMajor()));
92126
Vals[1] = ConstantAsMetadata::get(B.getInt32(Ver.getMinor().value_or(0)));
93127
Entry->addOperand(MDNode::get(Ctx, Vals));
94128
}

0 commit comments

Comments
 (0)