brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 96d341c Raw
30 lines · plain
1/// Test i32 passing and returning on LoongArch642/// LoongArch64 LP64D ABI requires unsigned 32 bit integers to be sign extended.3 4// RUN: fir-opt --target-rewrite="target=loongarch64-unknown-linux-gnu" %s | FileCheck %s --check-prefix=LOONGARCH645// RUN: tco -target="loongarch64-unknown-linux-gnu" %s | FileCheck %s --check-prefix=LOONGARCH64_LLVM6 7module attributes {fir.defaultkind = "a1c4d8i4l4r4", fir.kindmap = "", llvm.data_layout = "e-m:e-p:64:64-i64:64-i128:128-n32:64-S128", llvm.target_triple = "loongarch64-unknown-linux-gnu"} {8 9// LOONGARCH64: func.func private @cfunc32(i32 {llvm.signext}) -> (i32 {llvm.signext}) attributes {fir.bindc_name = "cfunc32"}10 11// LOONGARCH64_LLVM: declare signext i32 @cfunc32(i32 signext)12func.func private @cfunc32(i32) -> i32 attributes {fir.bindc_name = "cfunc32"}13 14// LOONGARCH64-LABEL: func.func @foo(15// LOONGARCH64-SAME: %[[VAL_0:.*]]: i32 {llvm.signext}) -> (i32 {llvm.signext}) attributes {fir.bindc_name = "foo"} {16// LOONGARCH64: %[[VAL_1:.*]] = fir.call @cfunc32(%[[VAL_0]]) fastmath<contract> : (i32) -> i3217// LOONGARCH64: return %[[VAL_1]] : i3218// LOONGARCH64: }19 20// LOONGARCH64_LLVM-LABEL: define signext i32 @foo(21// LOONGARCH64_LLVM: i32 signext %[[VAL_0:.*]]) {22// LOONGARCH64_LLVM: %[[VAL_1:.*]] = call i32 @cfunc32(i32 %[[VAL_0]])23// LOONGARCH64_LLVM: ret i32 %[[VAL_1]]24// LOONGARCH64_LLVM: }25func.func @foo(%0: i32) -> i32 attributes {fir.bindc_name = "foo"} {26  %1 = fir.call @cfunc32(%0) fastmath<contract> : (i32) -> i3227  return %1 : i3228}29}30