Skip to content

Commit 2e534a5

Browse files
committed
new test
1 parent e0638d1 commit 2e534a5

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.3-library -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s
2+
3+
// CHECK-LABEL: fn
4+
// CHECK: [[B:%.*]] = alloca <2 x i32>, align 1
5+
// CHECK-NEXT: store <2 x i32> splat (i32 1), ptr [[B]], align 1
6+
// CHECK-NEXT: [[BoolVec:%.*]] = load <2 x i32>, ptr [[B]], align 1
7+
// CHECK-NEXT: [[L:%.*]] = trunc <2 x i32> [[BoolVec:%.*]] to <2 x i1>
8+
// CHECK-NEXT: [[VecExt:%.*]] = extractelement <2 x i1> [[L]], i32 0
9+
// CHECK-NEXT: ret i1 [[VecExt]]
10+
bool fn() {
11+
bool2 B = {true,true};
12+
return B[0];
13+
}
14+
15+
// CHECK-LABEL: fn2
16+
// CHECK: [[VAddr:%.*]] = alloca i32, align 4
17+
// CHECK-NEXT: [[A:%.*]] = alloca <2 x i32>, align 1
18+
// CHECK-NEXT: [[StoreV:%.*]] = zext i1 {{.*}} to i32
19+
// CHECK-NEXT: store i32 [[StoreV]], ptr [[VAddr]], align 4
20+
// CHECK-NEXT: [[L:%.*]] = load i32, ptr [[VAddr]], align 4
21+
// CHECK-NEXT: [[LoadV:%.*]] = trunc i32 [[L]] to i1
22+
// CHECK-NEXT: [[Vec:%.*]] = insertelement <2 x i1> poison, i1 [[LoadV]], i32 0
23+
// CHECK-NEXT: [[Vec1:%.*]] = insertelement <2 x i1> [[Vec]], i1 true, i32 1
24+
// CHECK-NEXT: [[Z:%.*]] = zext <2 x i1> [[Vec1]] to <2 x i32>
25+
// CHECK-NEXT: store <2 x i32> [[Z]], ptr [[A]], align 1
26+
// CHECK-NEXT: [[LoadBV:%.*]] = load <2 x i32>, ptr [[A]], align 1
27+
// CHECK-NEXT: [[LoadV2:%.*]] = trunc <2 x i32> [[LoadBV]] to <2 x i1>
28+
// CHECK-NEXT: ret <2 x i1> [[LoadV2]]
29+
bool2 fn2(bool V) {
30+
bool2 A = {V,true};
31+
return A;
32+
}

0 commit comments

Comments
 (0)