Displaying 3 results from an estimated 3 matches for "_mul".
Did you mean:
s_mul
2008 Jan 14
0
[LLVMdev] llvm-gcc miscompilation or it's the gcc's rule?
I don't think C has a way to express 32b x 32b -> 64b multiply, even
though there is (on x86 anyway) a hardware instruction that does it.
The type of your expression (x * y) is still uint32_t. The implicit
type coercion up to uint64_t as part of the return statement doesn't
change this.
On Jan 13, 2008, at 10:29 PM, Zhou Sheng wrote:
> Hi,
>
> Here is C function:
>
2008 Jan 14
3
[LLVMdev] llvm-gcc miscompilation or it's the gcc's rule?
Hi,
Here is C function:
uint64_t mul(uint32_t x, uint32_t y) {
return x * y;
}
current llvm-gcc-4.0 with -O3 will compile it to:
define i64 @mul(i32 %x, i32 %y) nounwind {
entry:
%tmp3 = mul i32 %y, %x ; <i32> [#uses=1]
%tmp34 = zext i32 %tmp3 to i64 ; <i64> [#uses=1]
ret i64 %tmp34
}
This seems incorrect. I think it should extend %x, %y to i64 first and
2009 Dec 31
1
[PATCH] Autogenerate uureg opcode macros
...dst, _src(src))
-#define _LIT(dst, src) ureg_LIT(ureg, dst, _src(src))
-#define _RCP(dst, src) ureg_RCP(ureg, dst, _src(src))
-#define _RSQ(dst, src) ureg_RSQ(ureg, dst, _src(src))
-#define _EXP(dst, src) ureg_EXP(ureg, dst, _src(src))
-#define _LOG(dst, src) ureg_LOG(ureg, dst, _src(src))
-#define _MUL(dst, src0, src1) ureg_MUL(ureg, dst, _src(src0), _src(src1))
-#define _ADD(dst, src0, src1) ureg_ADD(ureg, dst, _src(src0), _src(src1))
-#define _DP3(dst, src0, src1) ureg_DP3(ureg, dst, _src(src0), _src(src1))
-#define _DP4(dst, src0, src1) ureg_DP4(ureg, dst, _src(src0), _src(src1))
-#define _DST...