1*cab44c51SKrzysztof Drewniak //===- Chipset.cpp - AMDGPU Chipset version struct parsing -----------===// 2*cab44c51SKrzysztof Drewniak // 3*cab44c51SKrzysztof Drewniak // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*cab44c51SKrzysztof Drewniak // See https://llvm.org/LICENSE.txt for license information. 5*cab44c51SKrzysztof Drewniak // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*cab44c51SKrzysztof Drewniak // 7*cab44c51SKrzysztof Drewniak //===----------------------------------------------------------------------===// 8*cab44c51SKrzysztof Drewniak 9*cab44c51SKrzysztof Drewniak #include "mlir/Conversion/AMDGPUToROCDL/Chipset.h" 10*cab44c51SKrzysztof Drewniak #include "mlir/Support/LLVM.h" 11*cab44c51SKrzysztof Drewniak #include "llvm/ADT/StringRef.h" 12*cab44c51SKrzysztof Drewniak 13*cab44c51SKrzysztof Drewniak using namespace mlir; 14*cab44c51SKrzysztof Drewniak using namespace mlir::amdgpu; 15*cab44c51SKrzysztof Drewniak parse(StringRef name)16*cab44c51SKrzysztof DrewniakFailureOr<Chipset> Chipset::parse(StringRef name) { 17*cab44c51SKrzysztof Drewniak if (!name.startswith("gfx")) 18*cab44c51SKrzysztof Drewniak return failure(); 19*cab44c51SKrzysztof Drewniak unsigned major = 0; 20*cab44c51SKrzysztof Drewniak unsigned minor = 0; 21*cab44c51SKrzysztof Drewniak StringRef majorRef = name.drop_front(3).drop_back(2); 22*cab44c51SKrzysztof Drewniak StringRef minorRef = name.take_back(2); 23*cab44c51SKrzysztof Drewniak if (majorRef.getAsInteger(10, major)) 24*cab44c51SKrzysztof Drewniak return failure(); 25*cab44c51SKrzysztof Drewniak if (minorRef.getAsInteger(16, minor)) 26*cab44c51SKrzysztof Drewniak return failure(); 27*cab44c51SKrzysztof Drewniak return Chipset(major, minor); 28*cab44c51SKrzysztof Drewniak } 29