|
5 | 5 | #pragma OPENCL EXTENSION cl_khr_fp16 : enable
|
6 | 6 |
|
7 | 7 | typedef unsigned int uint;
|
| 8 | +typedef unsigned short int ushort; |
8 | 9 | typedef unsigned int __attribute__((ext_vector_type(2))) uint2;
|
9 | 10 | typedef half __attribute__((ext_vector_type(2))) half2;
|
10 | 11 |
|
@@ -369,6 +370,30 @@ void test_cvt_pk_f16_bf8(global half2* out, short a)
|
369 | 370 | out[0] = __builtin_amdgcn_cvt_pk_f16_bf8(a);
|
370 | 371 | }
|
371 | 372 |
|
| 373 | +// CHECK-LABEL: @test_sat_pk4_i4_i8( |
| 374 | +// CHECK-NEXT: entry: |
| 375 | +// CHECK-NEXT: [[OUT_ADDR:%.*]] = alloca ptr, align 8, addrspace(5) |
| 376 | +// CHECK-NEXT: [[SRC_ADDR:%.*]] = alloca i32, align 4, addrspace(5) |
| 377 | +// CHECK-NEXT: [[OUT_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[OUT_ADDR]] to ptr |
| 378 | +// CHECK-NEXT: [[SRC_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[SRC_ADDR]] to ptr |
| 379 | +// CHECK-NEXT: store ptr [[OUT:%.*]], ptr [[OUT_ADDR_ASCAST]], align 8 |
| 380 | +// CHECK-NEXT: store i32 [[SRC:%.*]], ptr [[SRC_ADDR_ASCAST]], align 4 |
| 381 | +// CHECK-NEXT: [[TMP0:%.*]] = load i32, ptr [[SRC_ADDR_ASCAST]], align 4 |
| 382 | +// CHECK-NEXT: [[TMP1:%.*]] = call i16 @llvm.amdgcn.sat.pk4.i4.i8(i32 [[TMP0]]) |
| 383 | +// CHECK-NEXT: [[TMP2:%.*]] = load ptr, ptr [[OUT_ADDR_ASCAST]], align 8 |
| 384 | +// CHECK-NEXT: store i16 [[TMP1]], ptr [[TMP2]], align 2 |
| 385 | +// CHECK-NEXT: [[TMP3:%.*]] = load i32, ptr [[SRC_ADDR_ASCAST]], align 4 |
| 386 | +// CHECK-NEXT: [[TMP4:%.*]] = call i16 @llvm.amdgcn.sat.pk4.u4.u8(i32 [[TMP3]]) |
| 387 | +// CHECK-NEXT: [[TMP5:%.*]] = load ptr, ptr [[OUT_ADDR_ASCAST]], align 8 |
| 388 | +// CHECK-NEXT: store i16 [[TMP4]], ptr [[TMP5]], align 2 |
| 389 | +// CHECK-NEXT: ret void |
| 390 | +// |
| 391 | +void test_sat_pk4_i4_i8(ushort *out, uint src) |
| 392 | +{ |
| 393 | + *out = __builtin_amdgcn_sat_pk4_i4_i8(src); |
| 394 | + *out = __builtin_amdgcn_sat_pk4_u4_u8(src); |
| 395 | +} |
| 396 | + |
372 | 397 | // CHECK-LABEL: @test_permlane16_swap(
|
373 | 398 | // CHECK-NEXT: entry:
|
374 | 399 | // CHECK-NEXT: [[OUT_ADDR:%.*]] = alloca ptr addrspace(1), align 8, addrspace(5)
|
|
0 commit comments