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