PTX: Unify handling of loads/stores

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@140533 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Justin Holewinski
2011-09-26 16:20:28 +00:00
parent 6b8990df42
commit c1d8fbd41a
5 changed files with 38 additions and 206 deletions

View File

@@ -6,9 +6,6 @@
;CHECK: .extern .const .b8 array_constant_i16[20];
@array_constant_i16 = external addrspace(1) constant [10 x i16]
;CHECK: .extern .local .b8 array_local_i16[20];
@array_local_i16 = external addrspace(2) global [10 x i16]
;CHECK: .extern .shared .b8 array_shared_i16[20];
@array_shared_i16 = external addrspace(4) global [10 x i16]
@@ -18,9 +15,6 @@
;CHECK: .extern .const .b8 array_constant_i32[40];
@array_constant_i32 = external addrspace(1) constant [10 x i32]
;CHECK: .extern .local .b8 array_local_i32[40];
@array_local_i32 = external addrspace(2) global [10 x i32]
;CHECK: .extern .shared .b8 array_shared_i32[40];
@array_shared_i32 = external addrspace(4) global [10 x i32]
@@ -30,9 +24,6 @@
;CHECK: .extern .const .b8 array_constant_i64[80];
@array_constant_i64 = external addrspace(1) constant [10 x i64]
;CHECK: .extern .local .b8 array_local_i64[80];
@array_local_i64 = external addrspace(2) global [10 x i64]
;CHECK: .extern .shared .b8 array_shared_i64[80];
@array_shared_i64 = external addrspace(4) global [10 x i64]
@@ -42,9 +33,6 @@
;CHECK: .extern .const .b8 array_constant_float[40];
@array_constant_float = external addrspace(1) constant [10 x float]
;CHECK: .extern .local .b8 array_local_float[40];
@array_local_float = external addrspace(2) global [10 x float]
;CHECK: .extern .shared .b8 array_shared_float[40];
@array_shared_float = external addrspace(4) global [10 x float]
@@ -54,9 +42,6 @@
;CHECK: .extern .const .b8 array_constant_double[80];
@array_constant_double = external addrspace(1) constant [10 x double]
;CHECK: .extern .local .b8 array_local_double[80];
@array_local_double = external addrspace(2) global [10 x double]
;CHECK: .extern .shared .b8 array_shared_double[80];
@array_shared_double = external addrspace(4) global [10 x double]
@@ -296,56 +281,6 @@ entry:
ret double %x
}
define ptx_device i16 @t4_local_u16() {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_i16;
;CHECK: ld.local.u16 %ret{{[0-9]+}}, [%r[[R0]]];
;CHECK: ret;
%i = getelementptr [10 x i16] addrspace(2)* @array_local_i16, i32 0, i32 0
%x = load i16 addrspace(2)* %i
ret i16 %x
}
define ptx_device i32 @t4_local_u32() {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_i32;
;CHECK: ld.local.u32 %ret{{[0-9]+}}, [%r[[R0]]];
;CHECK: ret;
%i = getelementptr [10 x i32] addrspace(2)* @array_local_i32, i32 0, i32 0
%x = load i32 addrspace(2)* %i
ret i32 %x
}
define ptx_device i64 @t4_local_u64() {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_i64;
;CHECK: ld.local.u64 %ret{{[0-9]+}}, [%r[[R0]]];
;CHECK: ret;
%i = getelementptr [10 x i64] addrspace(2)* @array_local_i64, i32 0, i32 0
%x = load i64 addrspace(2)* %i
ret i64 %x
}
define ptx_device float @t4_local_f32() {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_float;
;CHECK: ld.local.f32 %ret{{[0-9]+}}, [%r[[R0]]];
;CHECK: ret;
%i = getelementptr [10 x float] addrspace(2)* @array_local_float, i32 0, i32 0
%x = load float addrspace(2)* %i
ret float %x
}
define ptx_device double @t4_local_f64() {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_double;
;CHECK: ld.local.f64 %ret{{[0-9]+}}, [%r[[R0]]];
;CHECK: ret;
%i = getelementptr [10 x double] addrspace(2)* @array_local_double, i32 0, i32 0
%x = load double addrspace(2)* %i
ret double %x
}
define ptx_device i16 @t4_shared_u16() {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_shared_i16;

View File

@@ -6,9 +6,6 @@
;CHECK: .extern .const .b8 array_constant_i16[20];
@array_constant_i16 = external addrspace(1) constant [10 x i16]
;CHECK: .extern .local .b8 array_local_i16[20];
@array_local_i16 = external addrspace(2) global [10 x i16]
;CHECK: .extern .shared .b8 array_shared_i16[20];
@array_shared_i16 = external addrspace(4) global [10 x i16]
@@ -18,9 +15,6 @@
;CHECK: .extern .const .b8 array_constant_i32[40];
@array_constant_i32 = external addrspace(1) constant [10 x i32]
;CHECK: .extern .local .b8 array_local_i32[40];
@array_local_i32 = external addrspace(2) global [10 x i32]
;CHECK: .extern .shared .b8 array_shared_i32[40];
@array_shared_i32 = external addrspace(4) global [10 x i32]
@@ -30,9 +24,6 @@
;CHECK: .extern .const .b8 array_constant_i64[80];
@array_constant_i64 = external addrspace(1) constant [10 x i64]
;CHECK: .extern .local .b8 array_local_i64[80];
@array_local_i64 = external addrspace(2) global [10 x i64]
;CHECK: .extern .shared .b8 array_shared_i64[80];
@array_shared_i64 = external addrspace(4) global [10 x i64]
@@ -42,9 +33,6 @@
;CHECK: .extern .const .b8 array_constant_float[40];
@array_constant_float = external addrspace(1) constant [10 x float]
;CHECK: .extern .local .b8 array_local_float[40];
@array_local_float = external addrspace(2) global [10 x float]
;CHECK: .extern .shared .b8 array_shared_float[40];
@array_shared_float = external addrspace(4) global [10 x float]
@@ -54,9 +42,6 @@
;CHECK: .extern .const .b8 array_constant_double[80];
@array_constant_double = external addrspace(1) constant [10 x double]
;CHECK: .extern .local .b8 array_local_double[80];
@array_local_double = external addrspace(2) global [10 x double]
;CHECK: .extern .shared .b8 array_shared_double[80];
@array_shared_double = external addrspace(4) global [10 x double]
@@ -251,56 +236,6 @@ entry:
ret void
}
define ptx_device void @t4_local_u16(i16 %x) {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_i16;
;CHECK: st.local.u16 [%r[[R0]]], %rh{{[0-9]+}};
;CHECK: ret;
%i = getelementptr [10 x i16] addrspace(2)* @array_local_i16, i32 0, i32 0
store i16 %x, i16 addrspace(2)* %i
ret void
}
define ptx_device void @t4_local_u32(i32 %x) {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_i32;
;CHECK: st.local.u32 [%r[[R0]]], %r{{[0-9]+}};
;CHECK: ret;
%i = getelementptr [10 x i32] addrspace(2)* @array_local_i32, i32 0, i32 0
store i32 %x, i32 addrspace(2)* %i
ret void
}
define ptx_device void @t4_local_u64(i64 %x) {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_i64;
;CHECK: st.local.u64 [%r[[R0]]], %rd{{[0-9]+}};
;CHECK: ret;
%i = getelementptr [10 x i64] addrspace(2)* @array_local_i64, i32 0, i32 0
store i64 %x, i64 addrspace(2)* %i
ret void
}
define ptx_device void @t4_local_f32(float %x) {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_float;
;CHECK: st.local.f32 [%r[[R0]]], %f{{[0-9]+}};
;CHECK: ret;
%i = getelementptr [10 x float] addrspace(2)* @array_local_float, i32 0, i32 0
store float %x, float addrspace(2)* %i
ret void
}
define ptx_device void @t4_local_f64(double %x) {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_local_double;
;CHECK: st.local.f64 [%r[[R0]]], %fd{{[0-9]+}};
;CHECK: ret;
%i = getelementptr [10 x double] addrspace(2)* @array_local_double, i32 0, i32 0
store double %x, double addrspace(2)* %i
ret void
}
define ptx_device void @t4_shared_u16(i16 %x) {
entry:
;CHECK: mov.u32 %r[[R0:[0-9]+]], array_shared_i16;