brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.5 KiB · 0fb5c41 Raw
128 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// RUN: %clang_cc1 -triple spir64 -fsycl-is-device -disable-llvm-passes -emit-llvm %s -o - | FileCheck %s3 4// CHECK-LABEL: @_Z4testv(5// CHECK-NEXT:  entry:6// CHECK-NEXT:    [[I:%.*]] = alloca i32, align 47// CHECK-NEXT:    [[PPTR:%.*]] = alloca ptr addrspace(4), align 88// CHECK-NEXT:    [[IS_I_PTR:%.*]] = alloca i8, align 19// CHECK-NEXT:    [[VAR23:%.*]] = alloca i32, align 410// CHECK-NEXT:    [[CP:%.*]] = alloca ptr addrspace(4), align 811// CHECK-NEXT:    [[ARR:%.*]] = alloca [42 x i32], align 412// CHECK-NEXT:    [[CPP:%.*]] = alloca ptr addrspace(4), align 813// CHECK-NEXT:    [[APTR:%.*]] = alloca ptr addrspace(4), align 814// CHECK-NEXT:    [[STR:%.*]] = alloca ptr addrspace(4), align 815// CHECK-NEXT:    [[PHI_STR:%.*]] = alloca ptr addrspace(4), align 816// CHECK-NEXT:    [[SELECT_NULL:%.*]] = alloca ptr addrspace(4), align 817// CHECK-NEXT:    [[SELECT_STR_TRIVIAL1:%.*]] = alloca ptr addrspace(4), align 818// CHECK-NEXT:    [[SELECT_STR_TRIVIAL2:%.*]] = alloca ptr addrspace(4), align 819// CHECK-NEXT:    [[I_ASCAST:%.*]] = addrspacecast ptr [[I]] to ptr addrspace(4)20// CHECK-NEXT:    [[PPTR_ASCAST:%.*]] = addrspacecast ptr [[PPTR]] to ptr addrspace(4)21// CHECK-NEXT:    [[IS_I_PTR_ASCAST:%.*]] = addrspacecast ptr [[IS_I_PTR]] to ptr addrspace(4)22// CHECK-NEXT:    [[VAR23_ASCAST:%.*]] = addrspacecast ptr [[VAR23]] to ptr addrspace(4)23// CHECK-NEXT:    [[CP_ASCAST:%.*]] = addrspacecast ptr [[CP]] to ptr addrspace(4)24// CHECK-NEXT:    [[ARR_ASCAST:%.*]] = addrspacecast ptr [[ARR]] to ptr addrspace(4)25// CHECK-NEXT:    [[CPP_ASCAST:%.*]] = addrspacecast ptr [[CPP]] to ptr addrspace(4)26// CHECK-NEXT:    [[APTR_ASCAST:%.*]] = addrspacecast ptr [[APTR]] to ptr addrspace(4)27// CHECK-NEXT:    [[STR_ASCAST:%.*]] = addrspacecast ptr [[STR]] to ptr addrspace(4)28// CHECK-NEXT:    [[PHI_STR_ASCAST:%.*]] = addrspacecast ptr [[PHI_STR]] to ptr addrspace(4)29// CHECK-NEXT:    [[SELECT_NULL_ASCAST:%.*]] = addrspacecast ptr [[SELECT_NULL]] to ptr addrspace(4)30// CHECK-NEXT:    [[SELECT_STR_TRIVIAL1_ASCAST:%.*]] = addrspacecast ptr [[SELECT_STR_TRIVIAL1]] to ptr addrspace(4)31// CHECK-NEXT:    [[SELECT_STR_TRIVIAL2_ASCAST:%.*]] = addrspacecast ptr [[SELECT_STR_TRIVIAL2]] to ptr addrspace(4)32// CHECK-NEXT:    store i32 0, ptr addrspace(4) [[I_ASCAST]], align 433// CHECK-NEXT:    store ptr addrspace(4) [[I_ASCAST]], ptr addrspace(4) [[PPTR_ASCAST]], align 834// CHECK-NEXT:    [[TMP0:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[PPTR_ASCAST]], align 835// CHECK-NEXT:    [[CMP:%.*]] = icmp eq ptr addrspace(4) [[TMP0]], [[I_ASCAST]]36// CHECK-NEXT:    [[STOREDV:%.*]] = zext i1 [[CMP]] to i837// CHECK-NEXT:    store i8 [[STOREDV]], ptr addrspace(4) [[IS_I_PTR_ASCAST]], align 138// CHECK-NEXT:    [[TMP1:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[PPTR_ASCAST]], align 839// CHECK-NEXT:    store i32 66, ptr addrspace(4) [[TMP1]], align 440// CHECK-NEXT:    store i32 23, ptr addrspace(4) [[VAR23_ASCAST]], align 441// CHECK-NEXT:    store ptr addrspace(4) [[VAR23_ASCAST]], ptr addrspace(4) [[CP_ASCAST]], align 842// CHECK-NEXT:    [[TMP2:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[CP_ASCAST]], align 843// CHECK-NEXT:    store i8 41, ptr addrspace(4) [[TMP2]], align 144// CHECK-NEXT:    [[ARRAYDECAY:%.*]] = getelementptr inbounds [42 x i32], ptr addrspace(4) [[ARR_ASCAST]], i64 0, i64 045// CHECK-NEXT:    store ptr addrspace(4) [[ARRAYDECAY]], ptr addrspace(4) [[CPP_ASCAST]], align 846// CHECK-NEXT:    [[TMP3:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[CPP_ASCAST]], align 847// CHECK-NEXT:    store i8 43, ptr addrspace(4) [[TMP3]], align 148// CHECK-NEXT:    [[ARRAYDECAY1:%.*]] = getelementptr inbounds [42 x i32], ptr addrspace(4) [[ARR_ASCAST]], i64 0, i64 049// CHECK-NEXT:    [[ADD_PTR:%.*]] = getelementptr inbounds i32, ptr addrspace(4) [[ARRAYDECAY1]], i64 1050// CHECK-NEXT:    store ptr addrspace(4) [[ADD_PTR]], ptr addrspace(4) [[APTR_ASCAST]], align 851// CHECK-NEXT:    [[TMP4:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[APTR_ASCAST]], align 852// CHECK-NEXT:    [[ARRAYDECAY2:%.*]] = getelementptr inbounds [42 x i32], ptr addrspace(4) [[ARR_ASCAST]], i64 0, i64 053// CHECK-NEXT:    [[ADD_PTR3:%.*]] = getelementptr inbounds nuw i32, ptr addrspace(4) [[ARRAYDECAY2]], i64 16854// CHECK-NEXT:    [[CMP4:%.*]] = icmp ult ptr addrspace(4) [[TMP4]], [[ADD_PTR3]]55// CHECK-NEXT:    br i1 [[CMP4]], label [[IF_THEN:%.*]], label [[IF_END:%.*]]56// CHECK:       if.then:57// CHECK-NEXT:    [[TMP5:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[APTR_ASCAST]], align 858// CHECK-NEXT:    store i32 44, ptr addrspace(4) [[TMP5]], align 459// CHECK-NEXT:    br label [[IF_END]]60// CHECK:       if.end:61// CHECK-NEXT:    store ptr addrspace(4) addrspacecast (ptr addrspace(1) @.str to ptr addrspace(4)), ptr addrspace(4) [[STR_ASCAST]], align 862// CHECK-NEXT:    [[TMP6:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[STR_ASCAST]], align 863// CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i8, ptr addrspace(4) [[TMP6]], i64 064// CHECK-NEXT:    [[TMP7:%.*]] = load i8, ptr addrspace(4) [[ARRAYIDX]], align 165// CHECK-NEXT:    [[CONV:%.*]] = sext i8 [[TMP7]] to i3266// CHECK-NEXT:    store i32 [[CONV]], ptr addrspace(4) [[I_ASCAST]], align 467// CHECK-NEXT:    [[TMP8:%.*]] = load i32, ptr addrspace(4) [[I_ASCAST]], align 468// CHECK-NEXT:    [[CMP5:%.*]] = icmp sgt i32 [[TMP8]], 269// CHECK-NEXT:    br i1 [[CMP5]], label [[COND_TRUE:%.*]], label [[COND_FALSE:%.*]]70// CHECK:       cond.true:71// CHECK-NEXT:    [[TMP9:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[STR_ASCAST]], align 872// CHECK-NEXT:    br label [[COND_END:%.*]]73// CHECK:       cond.false:74// CHECK-NEXT:    br label [[COND_END]]75// CHECK:       cond.end:76// CHECK-NEXT:    [[COND:%.*]] = phi ptr addrspace(4) [ [[TMP9]], [[COND_TRUE]] ], [ addrspacecast (ptr addrspace(1) @.str.1 to ptr addrspace(4)), [[COND_FALSE]] ]77// CHECK-NEXT:    store ptr addrspace(4) [[COND]], ptr addrspace(4) [[PHI_STR_ASCAST]], align 878// CHECK-NEXT:    [[TMP10:%.*]] = load i32, ptr addrspace(4) [[I_ASCAST]], align 479// CHECK-NEXT:    [[CMP6:%.*]] = icmp sgt i32 [[TMP10]], 280// CHECK-NEXT:    [[TMP11:%.*]] = zext i1 [[CMP6]] to i6481// CHECK-NEXT:    [[COND7:%.*]] = select i1 [[CMP6]], ptr addrspace(4) addrspacecast (ptr addrspace(1) @.str.2 to ptr addrspace(4)), ptr addrspace(4) null82// CHECK-NEXT:    store ptr addrspace(4) [[COND7]], ptr addrspace(4) [[SELECT_NULL_ASCAST]], align 883// CHECK-NEXT:    [[TMP12:%.*]] = load ptr addrspace(4), ptr addrspace(4) [[STR_ASCAST]], align 884// CHECK-NEXT:    store ptr addrspace(4) [[TMP12]], ptr addrspace(4) [[SELECT_STR_TRIVIAL1_ASCAST]], align 885// CHECK-NEXT:    store ptr addrspace(4) addrspacecast (ptr addrspace(1) @.str.1 to ptr addrspace(4)), ptr addrspace(4) [[SELECT_STR_TRIVIAL2_ASCAST]], align 886// CHECK-NEXT:    ret void87//88[[clang::sycl_external]] void test() {89  static const int foo = 0x42;90 91 92  int i = 0;93  int *pptr = &i;94  bool is_i_ptr = (pptr == &i);95  *pptr = foo;96 97  int var23 = 23;98  char *cp = (char *)&var23;99  *cp = 41;100 101  int arr[42];102  char *cpp = (char *)arr;103  *cpp = 43;104 105  int *aptr = arr + 10;106  if (aptr < arr + sizeof(arr))107    *aptr = 44;108 109  const char *str = "Hello, world!";110 111  i = str[0];112 113  const char *phi_str = i > 2 ? str : "Another hello world!";114  (void)phi_str;115 116 117 118 119  const char *select_null = i > 2 ? "Yet another Hello world" : nullptr;120  (void)select_null;121 122  const char *select_str_trivial1 = true ? str : "Another hello world!";123  (void)select_str_trivial1;124 125  const char *select_str_trivial2 = false ? str : "Another hello world!";126  (void)select_str_trivial2;127}128