summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/R600/bitcast.ll
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2014-06-11 17:50:44 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2014-06-11 17:50:44 +0000
commit364a6747aa06ead940783e99f09e4759d271bdb3 (patch)
tree63a1323b8c9a0dea49763830e795eaf8d24bc210 /llvm/test/CodeGen/R600/bitcast.ll
parent11e0876bb2098ad734e9f5bbae31ce6ebb9f84cf (diff)
downloadbcm5719-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.ll14
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
+}
OpenPOWER on IntegriCloud