[llvm] [AMDGPU] - Generate s_bitreplicate_b64_b32 (PR #69209)

Jessica Del via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 23 07:43:42 PDT 2023


OutOfCache wrote:


> ```
>   %res1 = bitreplicate(%val1)
>   %res2 = bitreplicate(%val2)
>   %res = select %cond, %res1, %res2
> ```

When I write a test like that, I get the following assembly output:

```
	s_waitcnt vmcnt(0) expcnt(0) lgkmcnt(0)
	s_bitreplicate_b64_b32 s[0:1], 0x85fe3a92          ; %res1
	v_dual_mov_b32 v1, s0 :: v_dual_and_b32 v0, 1, v0
	v_mov_b32_e32 v2, s1
	s_bitreplicate_b64_b32 s[2:3], 0x3a9285fe         ; %res2
	v_cmp_eq_u32_e32 vcc_lo, 1, v0
	v_cndmask_b32_e32 v0, s2, v1, vcc_lo
	v_cndmask_b32_e32 v1, s3, v2, vcc_lo
	s_setpc_b64 s[30:31]
```
So, in the end `v1` has the value of `%res`, right? Is that not correct?

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


More information about the llvm-commits mailing list