|
| 1 | +// RUN: %clang_cc1 -opaque-pointers -fsycl-is-host -fintelfpga -triple x86_64 -aux-triple spir64_fpga -emit-llvm %s -o - | FileCheck %s |
| 2 | + |
| 3 | +// This test checks that we generate appropriate code for division |
| 4 | +// operations of _BitInts of size greater than 128 bits, since it |
| 5 | +// is allowed when -fintelfpga is enabled. The test uses a value of |
| 6 | +// 2048, the maximum bitsize that is currently supported. |
| 7 | + |
| 8 | +// CHECK: define{{.*}} void @_Z3fooDB2048_S_(ptr {{.*}} sret(i2048) align 8 %agg.result, ptr {{.*}} byval(i2048) align 8 %[[ARG1:[0-9]+]], ptr {{.*}} byval(i2048) align 8 %[[ARG2:[0-9]+]]) |
| 9 | +signed _BitInt(2048) foo(signed _BitInt(2048) a, signed _BitInt(2048) b) { |
| 10 | + // CHECK: %[[VAR_A:a]].addr = alloca i2048, align 8 |
| 11 | + // CHECK: %[[VAR_B:b]].addr = alloca i2048, align 8 |
| 12 | + // CHECK: %[[VAR_A]] = load i2048, ptr %[[ARG1]], align 8 |
| 13 | + // CHECK: %[[VAR_B]] = load i2048, ptr %[[ARG2]], align 8 |
| 14 | + // CHECK: store i2048 %[[VAR_A]], ptr %[[VAR_A]].addr, align 8 |
| 15 | + // CHECK: store i2048 %[[VAR_B]], ptr %[[VAR_B]].addr, align 8 |
| 16 | + // CHECK: %[[TEMP1:[0-9]+]] = load i2048, ptr %[[VAR_A]].addr, align 8 |
| 17 | + // CHECK: %[[TEMP2:[0-9]+]] = load i2048, ptr %[[VAR_B]].addr, align 8 |
| 18 | + // CHECK: %div = sdiv i2048 %[[TEMP1]], %[[TEMP2]] |
| 19 | + // CHECK: store i2048 %div, ptr %agg.result, align 8 |
| 20 | + // CHECK: %[[RES:[0-9+]]] = load i2048, ptr %agg.result, align 8 |
| 21 | + // CHECK: store i2048 %[[RES]], ptr %agg.result, align 8 |
| 22 | + // CHECK: ret void |
| 23 | + return a / b; |
| 24 | +} |
0 commit comments