llvm-project
4b84223a - [MLIR][LLVMIR][DLTI] Pass to update #llvm.target's features per relevant backend (#154938)

Commit
12 days ago
[MLIR][LLVMIR][DLTI] Pass to update #llvm.target's features per relevant backend (#154938) Modifies `#llvm.target<..., features = $FEATURES>` so that `$FEATURES` is now an `#llvm.target_features<[...]>` attribute (rather than a `StringAttr`). This enables the attribute to respond to DLTI queries for the different target features. The pass updates the `$FEATURES` attribute of the target attr at name `llvm.target` in accordance with the (Sub)Target's features that the relevant LLVM backend knows about. --- DEMO: ```mlir module attributes {llvm.target = #llvm.target<triple = "x86_64-unknown-linux", chip = "skylake"> } { } ``` by way of `-llvm-target-to-target-features` turns into: ```mlir module attributes {llvm.target = #llvm.target<triple = "x86_64-unknown-linux", chip = "skylake", features = <["+64bit", "+64bit-mode", "+adx", "+aes", "+allow-light-256-bit", "+avx", "+avx2", "+bmi", "+bmi2", "+clflushopt", "+cmov", "+crc32", "+cx16", "+cx8", "+ermsb", "+f16c", "+false-deps-popcnt", "+fast-15bytenop", "+fast-gather", "+fast-scalar-fsqrt", "+fast-shld-rotate", "+fast-variable-crosslane-shuffle", "+fast-variable-perlane-shuffle", "+fast-vector-fsqrt", "+fma", "+fsgsbase", "+fxsr", "+idivq-to-divl", "+invpcid", "+lzcnt", "+macrofusion", "+mmx", "+movbe", "+no-bypass-delay-blend", "+no-bypass-delay-mov", "+no-bypass-delay-shuffle", "+nopl", "+pclmul", "+popcnt", "+prfchw", "+rdrnd", "+rdseed", "+sahf", "+slow-3ops-lea", "+sse", "+sse2", "+sse3", "+sse4.1", "+sse4.2", "+ssse3", "+vzeroupper", "+x87", "+xsave", "+xsavec", "+xsaveopt", "+xsaves"]>>} { } ```
Author
Parents
Loading