brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.9 KiB · 14fb45e Raw
43 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 52; RUN: opt -passes=instcombine -S -o - %s | FileCheck %s3 4target triple = "amdgcn-amd-amdhsa"5 6%double_double = type { double, double }7 8declare void @llvm.memcpy.p0.p0.i64(ptr, ptr, i64, i1)9 10define void @_test(ptr addrspace(4) byref(%double_double) align 8 %in)  {11; CHECK-LABEL: define void @_test(12; CHECK-SAME: ptr addrspace(4) byref([[DOUBLE_DOUBLE:%.*]]) align 8 [[IN:%.*]]) {13; CHECK-NEXT:  [[ENTRY:.*]]:14; CHECK-NEXT:    [[ALPHA_UNION:%.*]] = addrspacecast ptr addrspace(4) [[IN]] to ptr15; CHECK-NEXT:    [[LOAD:%.*]] = load i8, ptr addrspace(5) null, align 116; CHECK-NEXT:    [[LOADEDV:%.*]] = trunc i8 [[LOAD]] to i117; CHECK-NEXT:    br i1 [[LOADEDV]], label %[[COND_END:.*]], label %[[COND_FALSE:.*]]18; CHECK:       [[COND_FALSE]]:19; CHECK-NEXT:    [[TMP0:%.*]] = load ptr, ptr addrspace(4) [[IN]], align 820; CHECK-NEXT:    br label %[[COND_END]]21; CHECK:       [[COND_END]]:22; CHECK-NEXT:    [[COND1:%.*]] = phi ptr [ [[TMP0]], %[[COND_FALSE]] ], [ [[ALPHA_UNION]], %[[ENTRY]] ]23; CHECK-NEXT:    call void @llvm.memcpy.p0.p0.i64(ptr noundef nonnull align 1 dereferenceable(16) poison, ptr noundef nonnull align 1 dereferenceable(16) [[COND1]], i64 16, i1 false)24; CHECK-NEXT:    ret void25;26entry:27  %coerce = alloca %double_double, align 8, addrspace(5)28  %alpha_union = addrspacecast ptr addrspace(5) %coerce to ptr29  call void @llvm.memcpy.p5.p4.i64(ptr addrspace(5) align 8 %coerce, ptr addrspace(4) align 8 %in, i64 16, i1 false)30  %load1 = load i8, ptr addrspace(5) null, align 131  %loadedv = trunc i8 %load1 to i132  br i1 %loadedv, label %cond.end, label %cond.false33 34cond.false:35  %load2 = load ptr, ptr addrspace(5) %coerce, align 836  br label %cond.end37 38cond.end:39  %cond = phi ptr [ %load2, %cond.false ], [ %alpha_union, %entry ]40  call void @llvm.memcpy.p0.p0.i64(ptr poison, ptr %cond, i64 16, i1 false)41  ret void42}43