[llvm] [WIP][AMDGPU] Split `isInlinableLiteral16` into three and call the specific version if possible (PR #81345)

Stanislav Mekhanoshin via llvm-commits llvm-commits at lists.llvm.org
Thu Feb 22 01:35:53 PST 2024


================
@@ -99,39 +99,39 @@ define i32 @inline_A_constraint_H1() {
 ; VI-LABEL: {{^}}inline_A_constraint_H2:
 ; VI: v_mov_b32 {{v[0-9]+}}, 0x3c00
 define i32 @inline_A_constraint_H2() {
-  %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(i16 bitcast (half 1.0 to i16))
+  %v0 = tail call i32 asm "v_mov_b32 $0, $1", "=v,A"(trunc i32 bitcast (float 1.0 to i32) to i16)
----------------
rampitec wrote:

I do not see a problem with the original test. It does not expect an inline literal, it uses 0x3c00 which is a correct value not interpreted in any way other than literal. I.e. `i16 bitcast (half 1.0 to i16)` to me looks exactly as 0x3c00, which is the substituted and used in the mov as a constant. If it were expected inline constant here the check would be (incorrectly) `v_mov_b32 {{v[0-9]+}}, 1.0`.

https://github.com/llvm/llvm-project/pull/81345


More information about the llvm-commits mailing list