diff options
Diffstat (limited to 'llvm/test/CodeGen/R600/mul_uint24.ll')
| -rw-r--r-- | llvm/test/CodeGen/R600/mul_uint24.ll | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/R600/mul_uint24.ll b/llvm/test/CodeGen/R600/mul_uint24.ll index 27b3717f6b7..419f2751b83 100644 --- a/llvm/test/CodeGen/R600/mul_uint24.ll +++ b/llvm/test/CodeGen/R600/mul_uint24.ll @@ -46,3 +46,21 @@ entry: store i32 %1, i32 addrspace(1)* %out ret void } + +; Multiply with 24-bit inputs and 64-bit output +; FUNC_LABEL: @mul24_i64 +; EG; MUL_UINT24 +; EG: MULHI +; SI: V_MUL_U32_U24 +; FIXME: SI support 24-bit mulhi +; SI: V_MUL_HI_U32 +define void @mul24_i64(i64 addrspace(1)* %out, i64 %a, i64 %b) { +entry: + %0 = shl i64 %a, 40 + %a_24 = lshr i64 %0, 40 + %1 = shl i64 %b, 40 + %b_24 = lshr i64 %1, 40 + %2 = mul i64 %a_24, %b_24 + store i64 %2, i64 addrspace(1)* %out + ret void +} |

