[PATCH] Adding TableGen patterns to auto-select TBM instructions
Gao, Yunzhong
yunzhong_gao at playstation.sony.com
Wed Oct 2 12:42:12 PDT 2013
Yes this patch works without the extra instructions, but I have a little concern.
/* test case */
unsigned long long test__bextri_u64(unsigned long long a) {
return __bextri_u64(a, 0x7fffffffffLL);
}
With this cfe patch, if I pass a large integer constant to %llvm.x86.tbm.bextri.u64, the front end is not going to convert it
to i32imm, but the backend will not be able to match it to i64immSExt32 either. So I see an error like this:
fatal error: error in backend: Cannot select: intrinsic %llvm.x86.tbm.bextri.u64
I wonder if there is any clever front end trick I can make to tbmintrin.h. Right now the intrinsic is just a macro to allow
immediates to be passed to the builtin function.
- Gao.
________________________________________
From: Craig Topper [craig.topper at gmail.com]
Sent: Tuesday, October 01, 2013 11:03 PM
To: Gao, Yunzhong
Cc: llvm-commits at cs.uiuc.edu; Craig Topper
Subject: Re: [PATCH] Adding TableGen patterns to auto-select TBM instructions
I think these patches work without the need for the extra instructions.
On Tue, Oct 1, 2013 at 10:23 PM, Craig Topper <craig.topper at gmail.com<mailto:craig.topper at gmail.com>> wrote:
I say we just redefine the llvm side intrinsic to take an i64 immediate that we check to ensure its only really 32-bits. Keep the header file intrinsic taking an int and let it get implicitly extended when the __builtin function is called.
http://llvm-reviews.chandlerc.com/D1788
--
~Craig
More information about the llvm-commits
mailing list