clover/llvm: add printf support

"The implementation is based on what LLVM AMD target expect.
The compiler provided an id link to argument desc and format used.
The runtime need to store them to be able to parse the buffer filled by
the device during the kernel execution, ie, an id value to find the
format and followed by the arguments values"

v2: airlied
Split out the llvm backend code, parse the llvm fmt strings
in the backend into the generic string format, set the llvm buffer
format required flag.

v3: change formatter call site
36 jobs for !7357 with clover-nir-llvm-printf in 8 seconds (queued for 2 seconds)
latest detached
Status Job ID Name Coverage
  Sanity
passed #6373651
sanity

00:00:08

 
  Container
manual #6373654
aarch64 manual
arm_build
manual #6373655
manual
arm_test-base
manual #6373656
windows shell 1809 mesa manual
windows_build_vs2019
manual #6373652
manual
x86_build-base
manual #6373653
manual
x86_test-base
 
  Container 2
created #6373664
android_build
created #6373667
arm64_test
created #6373668
armhf_test
created #6373661
i386_build
created #6373657
kernel+rootfs_amd64
created #6373658
aarch64
kernel+rootfs_arm64
created #6373659
aarch64
kernel+rootfs_armhf
created #6373662
ppc64el_build
created #6373663
s390x_build
created #6373660
x86_build
created #6373665
x86_test-gl
created #6373666
x86_test-vk
 
  Meson X86 64
created #6373674
meson-clang
created #6373675
meson-clover
created #6373671
meson-clover-testing
created #6373672
meson-gallium
created #6373673
meson-release
created #6373669
meson-testing
created #6373670
meson-testing-asan
created #6373676
meson-vulkan
 
  Build Misc
created #6373677
meson-android
created #6373679
aarch64
meson-arm64
created #6373680
aarch64
meson-arm64-build-test
created #6373678
aarch64
meson-armhf
created #6373682
meson-i386
created #6373685
meson-mingw32-x86_64
created #6373684
kvm
meson-ppc64el
created #6373683
kvm
meson-s390x
created #6373681
allowed to fail
scons-win64
 
  Software Renderer
created #6373686
llvmpipe-piglit-cl