diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-06-11 17:50:44 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2014-06-11 17:50:44 +0000 |
commit | 364a6747aa06ead940783e99f09e4759d271bdb3 (patch) | |
tree | 63a1323b8c9a0dea49763830e795eaf8d24bc210 /llvm/test/CodeGen/R600/bitcast.ll | |
parent | 11e0876bb2098ad734e9f5bbae31ce6ebb9f84cf (diff) | |
download | bcm5719-llvm-364a6747aa06ead940783e99f09e4759d271bdb3.tar.gz bcm5719-llvm-364a6747aa06ead940783e99f09e4759d271bdb3.zip |
R600/SI: Use v_cvt_f32_ubyte* instructions
This eliminates extra extract instructions when loading an i8 vector to
a float vector.
llvm-svn: 210666
Diffstat (limited to 'llvm/test/CodeGen/R600/bitcast.ll')
-rw-r--r-- | llvm/test/CodeGen/R600/bitcast.ll | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/R600/bitcast.ll b/llvm/test/CodeGen/R600/bitcast.ll index 539c5975fac..a1a98f2d495 100644 --- a/llvm/test/CodeGen/R600/bitcast.ll +++ b/llvm/test/CodeGen/R600/bitcast.ll @@ -42,3 +42,17 @@ define void @v2i16_to_f32(float addrspace(1)* %out, <2 x i16> addrspace(1)* %in) store float %bc, float addrspace(1)* %out, align 4 ret void } + +define void @v4i8_to_i32(i32 addrspace(1)* %out, <4 x i8> addrspace(1)* %in) nounwind { + %load = load <4 x i8> addrspace(1)* %in, align 4 + %bc = bitcast <4 x i8> %load to i32 + store i32 %bc, i32 addrspace(1)* %out, align 4 + ret void +} + +define void @i32_to_v4i8(<4 x i8> addrspace(1)* %out, i32 addrspace(1)* %in) nounwind { + %load = load i32 addrspace(1)* %in, align 4 + %bc = bitcast i32 %load to <4 x i8> + store <4 x i8> %bc, <4 x i8> addrspace(1)* %out, align 4 + ret void +} |