[LLVM 16] Shifts do not generate poison values

This CL addresses the test failures that occurs in
* dEQP-VK.graphicsfuzz.cov-bitfieldExtract-undefined
* dEQP-VK.graphicsfuzz.cov-bitfieldinsert-undefined
when Swiftshader uses LLVM 16.

As a side effect, it also addresses the failures in:
* dEQP-VK.graphicsfuzz.cov-inst-combine-simplify-demanded-pack-unpack
* dEQP-VK.graphicsfuzz.cov-packhalf-unpackunorm

Source code of the tests:
https://github.com/KhronosGroup/VK-GL-CTS/blob/main/external/vulkancts/data/vulkan/amber/graphicsfuzz/

The 1st test verifies that you can pass a negative
offset to `bitfieldExtract` without causing UB.
The 2nd test verifies that you can pass an offset
greater than 31 to `bitfieldInsert` without causing
UB.

These test fails when Swiftshader uses LLVM 16 to
compile the shaders.

This is because Swiftshader implements
`bitfieldExtract` and `bitfieldInsert`  using LLVM's
`lshr` and `shl` instructions, which causes a poison value to
be generated if the shift is larger than the number of bits.
See https://llvm.org/docs/LangRef.html#lshr-instruction

This CL takes advantage of LLVM's freeze instruction
to absorb the poison value:
https://llvm.org/docs/LangRef.html#i-freeze

The freeze does not cause any overhead.
This can be verified by compiling the following LLVM
IR on godbolt with -O3:
```
define i32 @shift_test(i32 %a, i32 %shift) local_unnamed_addr #0 {
  %shifted = shl i32 %a, %shift
  %frozen = freeze i32 %shifted
  ret i32 %frozen
}
```

Test: Ran the DEQP-VK tests.
Bug: b/272710814
Change-Id: I32e4afe2ba9b993942d1eb1cd9b9d339533c98a8
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/71868
Commit-Queue: Jean-François Geyelin <jif@google.com>
Tested-by: Jean-François Geyelin <jif@google.com>
Kokoro-Result: kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/Reactor/LLVMReactor.cpp b/src/Reactor/LLVMReactor.cpp
index 6f7e503..def17d3 100644
--- a/src/Reactor/LLVMReactor.cpp
+++ b/src/Reactor/LLVMReactor.cpp
@@ -806,13 +806,13 @@
 Value *Nucleus::createShl(Value *lhs, Value *rhs)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-	return V(jit->builder->CreateShl(V(lhs), V(rhs)));
+	return V(jit->builder->CreateFreeze(jit->builder->CreateShl(V(lhs), V(rhs))));
 }
 
 Value *Nucleus::createLShr(Value *lhs, Value *rhs)
 {
 	RR_DEBUG_INFO_UPDATE_LOC();
-	return V(jit->builder->CreateLShr(V(lhs), V(rhs)));
+	return V(jit->builder->CreateFreeze(jit->builder->CreateLShr(V(lhs), V(rhs))));
 }
 
 Value *Nucleus::createAShr(Value *lhs, Value *rhs)