|
| 1 | +// RUN: %clang_cc1 -no-opaque-pointers -fsycl-is-host -fintelfpga -triple x86_64 -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. |
| 6 | + |
| 7 | +// CHECK: define{{.*}} void @_Z3fooDB211_S_(i211* {{.*}} sret(i211) align 8 %agg.result, i211* {{.*}} byval(i211) align 8 %[[ARG1:[0-9]+]], i211* {{.*}} byval(i211) align 8 %[[ARG2:[0-9]+]]) |
| 8 | +signed _BitInt(211) foo(signed _BitInt(211) a, signed _BitInt(211) b) { |
| 9 | + // CHECK: %[[VAR_A:a]].addr = alloca i211, align 8 |
| 10 | + // CHECK: %[[VAR_B:b]].addr = alloca i211, align 8 |
| 11 | + // CHECK: %[[VAR_A]] = load i211, i211* %[[ARG1]], align 8 |
| 12 | + // CHECK: %[[VAR_B]] = load i211, i211* %[[ARG2]], align 8 |
| 13 | + // CHECK: store i211 %[[VAR_A]], i211* %[[VAR_A]].addr, align 8 |
| 14 | + // CHECK: store i211 %[[VAR_B]], i211* %[[VAR_B]].addr, align 8 |
| 15 | + // CHECK: %[[TEMP1:[0-9]+]] = load i211, i211* %[[VAR_A]].addr, align 8 |
| 16 | + // CHECK: %[[TEMP2:[0-9]+]] = load i211, i211* %[[VAR_B]].addr, align 8 |
| 17 | + // CHECK: %div = sdiv i211 %[[TEMP1]], %[[TEMP2]] |
| 18 | + // CHECK: store i211 %div, i211* %agg.result, align 8 |
| 19 | + // CHECK: %[[RES:[0-9+]]] = load i211, i211* %agg.result, align 8 |
| 20 | + // CHECK: store i211 %[[RES]], i211* %agg.result, align 8 |
| 21 | + // CHECK: ret void |
| 22 | + return a / b; |
| 23 | +} |
0 commit comments