brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · f871deb Raw
130 lines · c
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py2// REQUIRES: systemz-registered-target3// RUN: %clang_cc1 %s -emit-llvm -ffp-exception-behavior=maytrap -o - -triple s390x-linux-gnu | FileCheck %s4 5#pragma float_control(except, on)6 7// CHECK-LABEL: @test_isnan__Float16(8// CHECK-NEXT:  entry:9// CHECK-NEXT:    [[F_ADDR:%.*]] = alloca half, align 210// CHECK-NEXT:    store half [[F:%.*]], ptr [[F_ADDR]], align 211// CHECK-NEXT:    [[TMP0:%.*]] = load half, ptr [[F_ADDR]], align 212// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f16(half [[TMP0]], i64 15) #[[ATTR2:[0-9]+]]13// CHECK-NEXT:    ret i32 [[TMP1]]14//15int test_isnan__Float16(_Float16 f) {16  return __builtin_isnan(f);17}18 19// CHECK-LABEL: @test_isnan_float(20// CHECK-NEXT:  entry:21// CHECK-NEXT:    [[F_ADDR:%.*]] = alloca float, align 422// CHECK-NEXT:    store float [[F:%.*]], ptr [[F_ADDR]], align 423// CHECK-NEXT:    [[TMP0:%.*]] = load float, ptr [[F_ADDR]], align 424// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f32(float [[TMP0]], i64 15) #[[ATTR2]]25// CHECK-NEXT:    ret i32 [[TMP1]]26//27int test_isnan_float(float f) {28  return __builtin_isnan(f);29}30 31// CHECK-LABEL: @test_isnan_double(32// CHECK-NEXT:  entry:33// CHECK-NEXT:    [[D_ADDR:%.*]] = alloca double, align 834// CHECK-NEXT:    store double [[D:%.*]], ptr [[D_ADDR]], align 835// CHECK-NEXT:    [[TMP0:%.*]] = load double, ptr [[D_ADDR]], align 836// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f64(double [[TMP0]], i64 15) #[[ATTR2]]37// CHECK-NEXT:    ret i32 [[TMP1]]38//39int test_isnan_double(double d) {40  return __builtin_isnan(d);41}42 43// CHECK-LABEL: @test_isnan_long_double(44// CHECK-NEXT:  entry:45// CHECK-NEXT:    [[LD_ADDR:%.*]] = alloca fp128, align 846// CHECK-NEXT:    [[LD:%.*]] = load fp128, ptr [[TMP0:%.*]], align 847// CHECK-NEXT:    store fp128 [[LD]], ptr [[LD_ADDR]], align 848// CHECK-NEXT:    [[TMP1:%.*]] = load fp128, ptr [[LD_ADDR]], align 849// CHECK-NEXT:    [[TMP2:%.*]] = call i32 @llvm.s390.tdc.f128(fp128 [[TMP1]], i64 15) #[[ATTR2]]50// CHECK-NEXT:    ret i32 [[TMP2]]51//52int test_isnan_long_double(long double ld) {53  return __builtin_isnan(ld);54}55 56// CHECK-LABEL: @test_isinf_float(57// CHECK-NEXT:  entry:58// CHECK-NEXT:    [[F_ADDR:%.*]] = alloca float, align 459// CHECK-NEXT:    store float [[F:%.*]], ptr [[F_ADDR]], align 460// CHECK-NEXT:    [[TMP0:%.*]] = load float, ptr [[F_ADDR]], align 461// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f32(float [[TMP0]], i64 48) #[[ATTR2]]62// CHECK-NEXT:    ret i32 [[TMP1]]63//64int test_isinf_float(float f) {65  return __builtin_isinf(f);66}67 68// CHECK-LABEL: @test_isinf_double(69// CHECK-NEXT:  entry:70// CHECK-NEXT:    [[D_ADDR:%.*]] = alloca double, align 871// CHECK-NEXT:    store double [[D:%.*]], ptr [[D_ADDR]], align 872// CHECK-NEXT:    [[TMP0:%.*]] = load double, ptr [[D_ADDR]], align 873// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f64(double [[TMP0]], i64 48) #[[ATTR2]]74// CHECK-NEXT:    ret i32 [[TMP1]]75//76int test_isinf_double(double d) {77  return __builtin_isinf(d);78}79 80// CHECK-LABEL: @test_isinf_long_double(81// CHECK-NEXT:  entry:82// CHECK-NEXT:    [[LD_ADDR:%.*]] = alloca fp128, align 883// CHECK-NEXT:    [[LD:%.*]] = load fp128, ptr [[TMP0:%.*]], align 884// CHECK-NEXT:    store fp128 [[LD]], ptr [[LD_ADDR]], align 885// CHECK-NEXT:    [[TMP1:%.*]] = load fp128, ptr [[LD_ADDR]], align 886// CHECK-NEXT:    [[TMP2:%.*]] = call i32 @llvm.s390.tdc.f128(fp128 [[TMP1]], i64 48) #[[ATTR2]]87// CHECK-NEXT:    ret i32 [[TMP2]]88//89int test_isinf_long_double(long double ld) {90  return __builtin_isinf(ld);91}92 93// CHECK-LABEL: @test_isfinite_float(94// CHECK-NEXT:  entry:95// CHECK-NEXT:    [[F_ADDR:%.*]] = alloca float, align 496// CHECK-NEXT:    store float [[F:%.*]], ptr [[F_ADDR]], align 497// CHECK-NEXT:    [[TMP0:%.*]] = load float, ptr [[F_ADDR]], align 498// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f32(float [[TMP0]], i64 4032) #[[ATTR2]]99// CHECK-NEXT:    ret i32 [[TMP1]]100//101int test_isfinite_float(float f) {102  return __builtin_isfinite(f);103}104 105// CHECK-LABEL: @test_isfinite_double(106// CHECK-NEXT:  entry:107// CHECK-NEXT:    [[D_ADDR:%.*]] = alloca double, align 8108// CHECK-NEXT:    store double [[D:%.*]], ptr [[D_ADDR]], align 8109// CHECK-NEXT:    [[TMP0:%.*]] = load double, ptr [[D_ADDR]], align 8110// CHECK-NEXT:    [[TMP1:%.*]] = call i32 @llvm.s390.tdc.f64(double [[TMP0]], i64 4032) #[[ATTR2]]111// CHECK-NEXT:    ret i32 [[TMP1]]112//113int test_isfinite_double(double d) {114  return __builtin_isfinite(d);115}116 117// CHECK-LABEL: @test_isfinite_long_double(118// CHECK-NEXT:  entry:119// CHECK-NEXT:    [[LD_ADDR:%.*]] = alloca fp128, align 8120// CHECK-NEXT:    [[LD:%.*]] = load fp128, ptr [[TMP0:%.*]], align 8121// CHECK-NEXT:    store fp128 [[LD]], ptr [[LD_ADDR]], align 8122// CHECK-NEXT:    [[TMP1:%.*]] = load fp128, ptr [[LD_ADDR]], align 8123// CHECK-NEXT:    [[TMP2:%.*]] = call i32 @llvm.s390.tdc.f128(fp128 [[TMP1]], i64 4032) #[[ATTR2]]124// CHECK-NEXT:    ret i32 [[TMP2]]125//126int test_isfinite_long_double(long double ld) {127  return __builtin_isfinite(ld);128}129 130