This patch does the following.
- Adds an Intrinsic int_x86_clzero which works with __builtin_ia32_clzero
- Identifies clzero feature using cpuid info. (Function:8000_0008, Checks if EBX[0]=1)
- Adds the clzero feature under znver1 architecture.
- The custom inserter is added in Lowering.
- A testcase is added to check the intrinsic.
- The clzero instruction is added to assembler test.
Given that clzero writes to memory shouldn't it have a mayStore = 1 attribute? I'm not sure if WriteSystem alone creates the necessary barrier.
This needs testing - check if separate load+instruction and instruction+store don't get folded across the clzero?