You can definitely generate machine code using Swift. In fact, by default when compiling a Swift program in Xcode or using the swiftc command-line compiler, the executable file consists of machine code.
LLVM bytecode is generated at some point during the build process, but the final executable that is created is machine code. There are compiler options that allow you to create LLVM bytecode only if you want, but LLVM bytecode is usually not executed directly, for example, Java bytecode that is run by the Java runtime.
Regarding cross-compiling for ARM, I'm not sure how this works with the swiftc tool, but if you create an iOS Xcode project, it creates an ARM executable. I am sure that swiftc complier has all the features needed to create ARM executables.
However, one of the catch I can think of is that many Swift features depend on Apple frameworks. However, now that Swift has been opened, cleaner, faster libraries for all kinds of things are gradually appearing.
ConfusedByCode
source share