brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.7 KiB · 14691e7 Raw
140 lines · plain
1// RUN: mlir-opt -convert-amdgpu-to-rocdl=chipset=gfx908 %s | FileCheck %s2// RUN: mlir-opt -convert-amdgpu-to-rocdl=chipset=gfx90a %s | FileCheck %s3// RUN: mlir-opt -convert-amdgpu-to-rocdl=chipset=gfx942 %s | FileCheck %s4 5func.func @test_dpp(%arg0: i32, %arg1: i32) -> i32 {6  // CHECK-LABEL: func @test_dpp7  // CHECK: rocdl.update.dpp %arg0, %arg1 with 257, 10, 15, false : i328  // CHECK: return %0 : i329  %0 = amdgpu.dpp %arg0 %arg1 row_shl ( 0x1 : i32 ) { row_mask = 0xa : i32, bound_ctrl = false } : i3210    return %0 : i3211}12 13func.func @quad_dpp(%arg0: i32, %arg1: i32) -> i32 {14  // CHECK-LABEL: func @quad_dpp15  // CHECK: rocdl.update.dpp %arg0, %arg1 with 145, 1, 1, true : i3216  // CHECK: return %0 : i3217  %0 = amdgpu.dpp %arg0 %arg1 quad_perm ( [1,0,1,2] ) { row_mask = 0x1 : i32, bank_mask = 0x1 : i32, bound_ctrl = true } : i3218    return %0 : i3219}20 21func.func @wave_shr_dpp(%arg0: i32, %arg1: i32) -> i32 {22  // CHECK-LABEL: func @wave_shr_dpp23  // CHECK: rocdl.update.dpp %arg0, %arg1 with 312, 10, 1, true : i3224  // CHECK: return %0 : i3225  %0 = amdgpu.dpp %arg0 %arg1 wave_shr { row_mask = 0xa : i32, bank_mask = 0x1 : i32, bound_ctrl = true } : i3226    return %0 : i3227}28 29func.func @row_half_mirror_update_dpp(%arg0: i32, %arg1: i32) -> i32 {30  // CHECK-LABEL: func @row_half_mirror_update_dpp31  // CHECK: rocdl.update.dpp %arg0, %arg1 with 321, 15, 1, false : i3232  // CHECK: return %0 : i3233%0 = amdgpu.dpp %arg0 %arg1 row_half_mirror { bank_mask = 0x1 : i32 } : i3234    return %0 : i3235}36 37func.func @wave_rol_update_dpp(%arg0: i32, %arg1: i32) -> i32 {38  // CHECK-LABEL: func @wave_rol_update_dpp39  // CHECK: rocdl.update.dpp %arg0, %arg1 with 308, 10, 1, false : i3240  // CHECK: return %0 : i3241  %0 = amdgpu.dpp %arg0 %arg1 wave_rol { row_mask = 0xa : i32, bank_mask = 0x1 : i32 } : i3242    return %0 : i3243}44 45func.func @row_bcast_dpp_f32(%arg0: f32, %arg1: f32) -> f32 {46  // CHECK-LABEL: func @row_bcast_dpp_f3247  // CHECK: rocdl.update.dpp %arg0, %arg1 with 322, 15, 15, true : f3248  // CHECK: return %0 : f3249  %0 = amdgpu.dpp %arg0 %arg1 row_bcast_15 { bound_ctrl = true } : f3250    return %0 : f3251}52 53func.func @test_dpp_f32(%arg0: f32, %arg1: f32) -> f32 {54  // CHECK-LABEL: func @test_dpp_f3255  // CHECK: rocdl.update.dpp %arg0, %arg1 with 320, 1, 4, true : f3256  // CHECK: return %0 : f3257  %0 = amdgpu.dpp %arg0 %arg1 row_mirror { row_mask = 0x1 : i32, bank_mask = 0x4 : i32, bound_ctrl = true } : f3258    return %0 : f3259}60 61func.func @quad_perm_update_dpp_f32(%arg0: f32, %arg1: f32) -> f32 {62  // CHECK-LABEL: func @quad_perm_update_dpp_f3263  // CHECK: rocdl.update.dpp %arg0, %arg1 with  88, 15, 1, false : f3264  // CHECK: return %0 : f3265  %0 = amdgpu.dpp %arg0 %arg1 quad_perm ( [0,2,1,1] ) { bank_mask = 0x1 : i32 } : f3266    return %0 : f3267}68 69func.func @quad_perm_dpp(%arg0: i64, %arg1: i64) -> i64 {70  // CHECK-LABEL: func @quad_perm_dpp71  // CHECK: rocdl.update.dpp %arg0, %arg1 with 88, 15, 15, false : i6472  // CHECK: return %0 : i6473  %0 = amdgpu.dpp %arg0 %arg1 quad_perm ( [0,2,1,1] ) : i6474    return %0 : i6475}76 77func.func @row_bcast_dpp(%arg0: f64, %arg1: f64) -> f64 {78  // CHECK-LABEL: func @row_bcast_dpp79  // CHECK: rocdl.update.dpp %arg0, %arg1 with 323, 4, 1, false : f6480  // CHECK: return %0 : f6481  %0 = amdgpu.dpp %arg0 %arg1 row_bcast_31 { row_mask = 0x4 : i32, bank_mask = 0x1 : i32} : f6482    return %0 : f6483}84 85func.func @test_dpp_f16(%arg0: f16, %arg1: f16) -> f16 {86  // CHECK-LABEL:  func @test_dpp_f1687  // CHECK: llvm.bitcast %arg1 : f16 to i1688  // CHECK: llvm.mlir.undef : vector<2xi16>89  // CHECK: llvm.mlir.constant(0 : i32) : i3290  // CHECK: llvm.insertelement %0, %1[%2 : i32] : vector<2xi16>91  // CHECK: llvm.bitcast %3 : vector<2xi16> to i3292  // CHECK: llvm.bitcast %arg0 : f16 to i1693  // CHECK: llvm.mlir.undef : vector<2xi16>94  // CHECK: llvm.mlir.constant(0 : i32) : i3295  // CHECK: llvm.insertelement %5, %6[%7 : i32] : vector<2xi16>96  // CHECK: llvm.bitcast %8 : vector<2xi16> to i3297  // CHECK: rocdl.update.dpp %9, %4 with 273, 15, 3, false : i3298  // CHECK: llvm.trunc %10 : i32 to i1699  // CHECK: llvm.bitcast %11 : i16 to f16100  // CHECK: return %12 : f16101  %0 = amdgpu.dpp %arg0 %arg1 row_shr ( 0x1 : i32 ){ bank_mask = 0x3 : i32 } : f16102    return %0 : f16103}104 105func.func @row_shl_dpp_i16(%arg0: i16, %arg1: i16) -> i16 {106  // CHECK-LABEL: func @row_shl_dpp_i16107  // CHECK: llvm.mlir.undef : vector<2xi16>108  // CHECK: llvm.mlir.constant(0 : i32) : i32109  // CHECK: llvm.insertelement %arg1, %0[%1 : i32] : vector<2xi16>110  // CHECK: llvm.bitcast %2 : vector<2xi16> to i32111  // CHECK: llvm.mlir.undef : vector<2xi16>112  // CHECK: llvm.mlir.constant(0 : i32) : i32113  // CHECK: llvm.insertelement %arg0, %4[%5 : i32] : vector<2xi16>114  // CHECK: llvm.bitcast %6 : vector<2xi16> to i32115  // CHECK: rocdl.update.dpp %7, %3 with 298, 10, 1, false : i32116  // CHECK: llvm.trunc %8 : i32 to i16117  // CHECK: return %9 : i16118  %0 = amdgpu.dpp %arg0 %arg1 row_ror ( 0xa : i32 ) { row_mask = 0xa : i32, bank_mask = 0x1 : i32 } : i16119    return %0 : i16120}121 122func.func @row_bcast_update_dpp_f16(%arg0: f16, %arg1: f16) -> f16 {123  // CHECK-LABEL: func @row_bcast_update_dpp_f16124  // CHECK: llvm.bitcast %arg1 : f16 to i16125  // CHECK: llvm.mlir.undef : vector<2xi16>126  // CHECK: llvm.mlir.constant(0 : i32) : i32127  // CHECK: llvm.insertelement %0, %1[%2 : i32] : vector<2xi16>128  // CHECK: llvm.bitcast %arg0 : f16 to i16129  // CHECK: llvm.mlir.undef : vector<2xi16>130  // CHECK: llvm.mlir.constant(0 : i32) : i32131  // CHECK  llvm.insertelement %5, %6[%7 : i32] : vector<2xi16>132  // CHECK: llvm.bitcast %8 : vector<2xi16> to i32133  // CHECK: rocdl.update.dpp %9, %4 with 322, 15, 15, true : i32134  // CHECK: llvm.trunc %10 : i32 to i16135  // CHECK: llvm.bitcast %11 : i16 to f16136  // CHECK: return %12 : f16137  %0 = amdgpu.dpp %arg0 %arg1 row_bcast_15 { bound_ctrl = true } : f16138    return %0 : f16139}140