brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.3 KiB · b474383 Raw
87 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 62; RUN: opt < %s -passes=dfsan -dfsan-add-global-name-suffix=0 -S | FileCheck %s3target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"4target triple = "x86_64-unknown-linux-gnu"5 6define i8 @add(i8 %a, i8 %b) {7; CHECK-LABEL: define i8 @add(8; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {9; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 210; CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 211; CHECK-NEXT:    [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]12; CHECK-NEXT:    [[C:%.*]] = add i8 [[A]], [[B]]13; CHECK-NEXT:    store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 214; CHECK-NEXT:    ret i8 [[C]]15;16  %c = add i8 %a, %b17  ret i8 %c18}19 20define i8 @sub(i8 %a, i8 %b) {21; CHECK-LABEL: define i8 @sub(22; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {23; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 224; CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 225; CHECK-NEXT:    [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]26; CHECK-NEXT:    [[C:%.*]] = sub i8 [[A]], [[B]]27; CHECK-NEXT:    store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 228; CHECK-NEXT:    ret i8 [[C]]29;30  %c = sub i8 %a, %b31  ret i8 %c32}33 34define i8 @mul(i8 %a, i8 %b) {35; CHECK-LABEL: define i8 @mul(36; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {37; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 238; CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 239; CHECK-NEXT:    [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]40; CHECK-NEXT:    [[C:%.*]] = mul i8 [[A]], [[B]]41; CHECK-NEXT:    store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 242; CHECK-NEXT:    ret i8 [[C]]43;44  %c = mul i8 %a, %b45  ret i8 %c46}47 48define i8 @sdiv(i8 %a, i8 %b) {49; CHECK-LABEL: define i8 @sdiv(50; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {51; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 252; CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 253; CHECK-NEXT:    [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]54; CHECK-NEXT:    [[C:%.*]] = sdiv i8 [[A]], [[B]]55; CHECK-NEXT:    store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 256; CHECK-NEXT:    ret i8 [[C]]57;58  %c = sdiv i8 %a, %b59  ret i8 %c60}61 62define i8 @udiv(i8 %a, i8 %b) {63; CHECK-LABEL: define i8 @udiv(64; CHECK-SAME: i8 [[A:%.*]], i8 [[B:%.*]]) {65; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr getelementptr (i8, ptr @__dfsan_arg_tls, i64 2), align 266; CHECK-NEXT:    [[TMP2:%.*]] = load i8, ptr @__dfsan_arg_tls, align 267; CHECK-NEXT:    [[TMP3:%.*]] = or i8 [[TMP2]], [[TMP1]]68; CHECK-NEXT:    [[C:%.*]] = udiv i8 [[A]], [[B]]69; CHECK-NEXT:    store i8 [[TMP3]], ptr @__dfsan_retval_tls, align 270; CHECK-NEXT:    ret i8 [[C]]71;72  %c = udiv i8 %a, %b73  ret i8 %c74}75 76define double @fneg(double %a) {77; CHECK-LABEL: define double @fneg(78; CHECK-SAME: double [[A:%.*]]) {79; CHECK-NEXT:    [[TMP1:%.*]] = load i8, ptr @__dfsan_arg_tls, align 280; CHECK-NEXT:    [[C:%.*]] = fneg double [[A]]81; CHECK-NEXT:    store i8 [[TMP1]], ptr @__dfsan_retval_tls, align 282; CHECK-NEXT:    ret double [[C]]83;84  %c = fneg double %a85  ret double %c86}87