| Index: test/Transforms/NaCl/constant-vector-rematerialization.ll
|
| diff --git a/test/Transforms/NaCl/constant-vector-rematerialization.ll b/test/Transforms/NaCl/constant-vector-rematerialization.ll
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..8647cef03ae7c3ef0fb8536d053505aa2c62c6ba
|
| --- /dev/null
|
| +++ b/test/Transforms/NaCl/constant-vector-rematerialization.ll
|
| @@ -0,0 +1,44 @@
|
| +; RUN: opt < %s -backend-canonicalize -S | FileCheck %s
|
| +
|
| +; Test that constant vectors that were globalized get rematerialized properly.
|
| +
|
| +; The datalayout is needed to determine the alignment of the globals.
|
| +target datalayout = "e-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-p:32:32:32-v128:32:32"
|
| +
|
| +@veci32 = internal constant [4 x i32] [i32 1, i32 2, i32 3, i32 4]
|
| +@veci32zero = internal constant [4 x i32] zeroinitializer
|
| +
|
| +@veci8 = internal constant [16 x i8] [i8 255, i8 255, i8 255, i8 0, i8 255, i8 255, i8 0, i8 255, i8 255, i8 0, i8 255, i8 255, i8 0, i8 255, i8 255, i8 255]
|
| +@veci8zero = internal constant [16 x i8] zeroinitializer
|
| +
|
| +define <4 x i32> @test_vec_i32() {
|
| + %bc = bitcast [4 x i32]* @veci32 to <4 x i32>*
|
| + %v = load <4 x i32>* %bc
|
| + ret <4 x i32> %v
|
| +}
|
| +; CHECK-LABEL: @test_vec_i32(
|
| +; CHECK-NEXT: ret <4 x i32> <i32 1, i32 2, i32 3, i32 4>
|
| +
|
| +define <4 x i32> @test_vec_i32_zero() {
|
| + %bc = bitcast [4 x i32]* @veci32zero to <4 x i32>*
|
| + %v = load <4 x i32>* %bc
|
| + ret <4 x i32> %v
|
| +}
|
| +; CHECK-LABEL: @test_vec_i32_zero(
|
| +; CHECK-NEXT: ret <4 x i32> zeroinitializer
|
| +
|
| +define <4 x i32> @test_vec_i8() {
|
| + %bc = bitcast [16 x i8]* @veci8 to <4 x i32>*
|
| + %v = load <4 x i32>* %bc
|
| + ret <4 x i32> %v
|
| +}
|
| +; CHECK-LABEL: @test_vec_i8(
|
| +; CHECK-NEXT: ret <4 x i32> <i32 16777215, i32 -16711681, i32 -65281, i32 -256>
|
| +
|
| +define <4 x i32> @test_vec_i8_zero() {
|
| + %bc = bitcast [16 x i8]* @veci8zero to <4 x i32>*
|
| + %v = load <4 x i32>* %bc
|
| + ret <4 x i32> %v
|
| +}
|
| +; CHECK-LABEL: @test_vec_i8_zero(
|
| +; CHECK-NEXT: ret <4 x i32> zeroinitializer
|
|
|