brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.0 KiB · bb9cd1c Raw
107 lines · plain
1// Check that the ceildivsi lowering is correct.2// We do not check any poison or UB values, as it is not possible to catch them.3 4// RUN: mlir-opt %s --convert-vector-to-llvm \5// RUN:             --convert-func-to-llvm --convert-arith-to-llvm | \6// RUN:   mlir-runner -e entry --entry-point-result=void \7// RUN:               --shared-libs=%mlir_c_runner_utils | \8// RUN:   FileCheck %s --match-full-lines9 10func.func @check_ceildivsi(%lhs : i32, %rhs : i32) -> () {11  %res = arith.ceildivsi %lhs, %rhs : i3212  vector.print %res : i3213  return14}15 16func.func @entry() {17  %int_min = arith.constant -2147483648 : i3218  %int_max = arith.constant 2147483647 : i3219  %minus_three = arith.constant -3 : i3220  %minus_two = arith.constant -2 : i3221  %minus_one = arith.constant -1 : i3222  %zero = arith.constant 0 : i3223  %one = arith.constant 1 : i3224  %two = arith.constant 2 : i3225  %three = arith.constant 3 : i32 26 27  // INT_MAX divided by values.28  // CHECK: 129  func.call @check_ceildivsi(%int_max, %int_max) : (i32, i32) -> ()30  // CHECK-NEXT: 031  func.call @check_ceildivsi(%int_max, %int_min) : (i32, i32) -> ()   32  // CHECK-NEXT: -214748364733  func.call @check_ceildivsi(%int_max, %minus_one) : (i32, i32) -> ()34  // CHECK-NEXT: -107374182335  func.call @check_ceildivsi(%int_max, %minus_two) : (i32, i32) -> ()36  // CHECK-NEXT: 214748364737  func.call @check_ceildivsi(%int_max, %one) : (i32, i32) -> ()38  // CHECK-NEXT: 107374182439  func.call @check_ceildivsi(%int_max, %two) : (i32, i32) -> ()40 41  // INT_MIN divided by values.42  // We do not check the result of INT_MIN divided by -1, as it is UB.43  // CHECK-NEXT: 144  func.call @check_ceildivsi(%int_min, %int_min) : (i32, i32) -> ()45  // CHECK-NEXT: -146  func.call @check_ceildivsi(%int_min, %int_max) : (i32, i32) -> ()47  // CHECK-NEXT: 107374182448  func.call @check_ceildivsi(%int_min, %minus_two) : (i32, i32) -> ()49  // CHECK-NEXT: -214748364850  func.call @check_ceildivsi(%int_min, %one) : (i32, i32) -> ()51  // CHECK-NEXT: -107374182452  func.call @check_ceildivsi(%int_min, %two) : (i32, i32) -> ()53 54  // Divide values by INT_MIN.55  // CHECK-NEXT: 056  func.call @check_ceildivsi(%one, %int_min) : (i32, i32) -> ()57  // CHECK-NEXT: 058  func.call @check_ceildivsi(%two, %int_min) : (i32, i32) -> ()59  // CHECK-NEXT: 160  func.call @check_ceildivsi(%minus_one, %int_min) : (i32, i32) -> ()61  // CHECK-NEXT: 162  func.call @check_ceildivsi(%minus_two, %int_min) : (i32, i32) -> ()63 64  // Divide values by INT_MAX.65  // CHECK-NEXT: 166  func.call @check_ceildivsi(%one, %int_max) : (i32, i32) -> ()67  // CHECK-NEXT: 168  func.call @check_ceildivsi(%two, %int_max) : (i32, i32) -> ()69  // CHECK-NEXT: 070  func.call @check_ceildivsi(%minus_one, %int_max) : (i32, i32) -> ()71  // CHECK-NEXT: 072  func.call @check_ceildivsi(%minus_two, %int_max) : (i32, i32) -> ()73 74  // Check divisions by 2.75  // CHECK-NEXT: -176  func.call @check_ceildivsi(%minus_three, %two) : (i32, i32) -> ()77  // CHECK-NEXT: -178  func.call @check_ceildivsi(%minus_two, %two) : (i32, i32) -> ()79  // CHECK-NEXT: 080  func.call @check_ceildivsi(%minus_one, %two) : (i32, i32) -> ()81  // CHECK-NEXT: 082  func.call @check_ceildivsi(%zero, %two) : (i32, i32) -> ()83  // CHECK-NEXT: 184  func.call @check_ceildivsi(%one, %two) : (i32, i32) -> ()85  // CHECK-NEXT: 186  func.call @check_ceildivsi(%two, %two) : (i32, i32) -> ()87  // CHECK-NEXT: 288  func.call @check_ceildivsi(%three, %two) : (i32, i32) -> ()89 90  // Check divisions by -2.91  // CHECK-NEXT: 292  func.call @check_ceildivsi(%minus_three, %minus_two) : (i32, i32) -> ()93  // CHECK-NEXT: 194  func.call @check_ceildivsi(%minus_two, %minus_two) : (i32, i32) -> ()95  // CHECK-NEXT: 196  func.call @check_ceildivsi(%minus_one, %minus_two) : (i32, i32) -> ()97  // CHECK-NEXT: 098  func.call @check_ceildivsi(%zero, %minus_two) : (i32, i32) -> ()99  // CHECK-NEXT: 0100  func.call @check_ceildivsi(%one, %minus_two) : (i32, i32) -> ()101  // CHECK-NEXT: -1102  func.call @check_ceildivsi(%two, %minus_two) : (i32, i32) -> ()103  // CHECK-NEXT: -1104  func.call @check_ceildivsi(%three, %minus_two) : (i32, i32) -> ()105  return106}107