aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/ext-vector.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/ext-vector.c')
-rw-r--r--test/CodeGen/ext-vector.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/CodeGen/ext-vector.c b/test/CodeGen/ext-vector.c
index 0b78e97fbb36..beb58827ea13 100644
--- a/test/CodeGen/ext-vector.c
+++ b/test/CodeGen/ext-vector.c
@@ -301,3 +301,40 @@ void test17(void) {
char valC;
char16 destVal = valC ? valA : valB;
}
+
+typedef __attribute__(( ext_vector_type(16) )) float float16;
+
+float16 vec16, vec16_2;
+
+// CHECK: @test_rgba
+void test_rgba() {
+ // CHECK: fadd <4 x float>
+ vec4_2 = vec4.abgr + vec4;
+
+ // CHECK: shufflevector {{.*}} <i32 0, i32 1>
+ vec2 = vec4.rg;
+ // CHECK: shufflevector {{.*}} <i32 2, i32 3>
+ vec2_2 = vec4.ba;
+ // CHECK: extractelement {{.*}} 2
+ f = vec4.b;
+ // CHECK: shufflevector {{.*}} <i32 2, i32 2, i32 2, i32 2>
+ vec4_2 = vec4_2.bbbb;
+
+ // CHECK: insertelement {{.*}} 0
+ vec2.r = f;
+ // CHECK: shufflevector {{.*}} <i32 1, i32 0>
+ vec2.gr = vec2;
+
+ // CHECK: extractelement {{.*}} 0
+ f = vec4_2.rg.r;
+ // CHECK: shufflevector {{.*}} <i32 2, i32 1, i32 0>
+ // CHECK: shufflevector {{.*}} <i32 0, i32 1, i32 2, i32 undef>
+ // CHECK: shufflevector {{.*}} <i32 4, i32 5, i32 6, i32 3>
+ vec4.rgb = vec4.bgr;
+
+ // CHECK: extractelement {{.*}} 11
+ // CHECK: insertelement {{.*}} 2
+ vec4.b = vec16.sb;
+ // CHECK: shufflevector {{.*}} <i32 10, i32 11, i32 12, i32 13>
+ vec4_2 = vec16.sabcd;
+}