65 lines · plain
1// RUN: mlir-translate -mlir-to-llvmir %s | FileCheck %s2 3// CHECK-LABEL: @test_prmt_default4llvm.func @test_prmt_default(%sel: i32, %lo: i32, %hi: i32) -> i32 {5 // CHECK: call i32 @llvm.nvvm.prmt(i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})6 %result = nvvm.prmt #nvvm.permute_mode<default> %sel, %lo, %hi : i327 llvm.return %result : i328}9 10// CHECK-LABEL: @test_prmt_f4e11llvm.func @test_prmt_f4e(%pos: i32, %lo: i32, %hi: i32) -> i32 {12 // CHECK: call i32 @llvm.nvvm.prmt.f4e(i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})13 %result = nvvm.prmt #nvvm.permute_mode<f4e> %pos, %lo, %hi : i3214 llvm.return %result : i3215}16 17// CHECK-LABEL: @test_prmt_b4e18llvm.func @test_prmt_b4e(%pos: i32, %lo: i32, %hi: i32) -> i32 {19 // CHECK: call i32 @llvm.nvvm.prmt.b4e(i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})20 %result = nvvm.prmt #nvvm.permute_mode<b4e> %pos, %lo, %hi : i3221 llvm.return %result : i3222}23 24// CHECK-LABEL: @test_prmt_rc825llvm.func @test_prmt_rc8(%sel: i32, %val: i32) -> i32 {26 // CHECK: call i32 @llvm.nvvm.prmt.rc8(i32 %{{.*}}, i32 %{{.*}})27 %result = nvvm.prmt #nvvm.permute_mode<rc8> %sel, %val : i3228 llvm.return %result : i3229}30 31// CHECK-LABEL: @test_prmt_ecl32llvm.func @test_prmt_ecl(%sel: i32, %val: i32) -> i32 {33 // CHECK: call i32 @llvm.nvvm.prmt.ecl(i32 %{{.*}}, i32 %{{.*}})34 %result = nvvm.prmt #nvvm.permute_mode<ecl> %sel, %val : i3235 llvm.return %result : i3236}37 38// CHECK-LABEL: @test_prmt_ecr39llvm.func @test_prmt_ecr(%sel: i32, %val: i32) -> i32 {40 // CHECK: call i32 @llvm.nvvm.prmt.ecr(i32 %{{.*}}, i32 %{{.*}})41 %result = nvvm.prmt #nvvm.permute_mode<ecr> %sel, %val : i3242 llvm.return %result : i3243}44 45// CHECK-LABEL: @test_prmt_rc1646llvm.func @test_prmt_rc16(%sel: i32, %val: i32) -> i32 {47 // CHECK: call i32 @llvm.nvvm.prmt.rc16(i32 %{{.*}}, i32 %{{.*}})48 %result = nvvm.prmt #nvvm.permute_mode<rc16> %sel, %val : i3249 llvm.return %result : i3250}51 52// CHECK-LABEL: @test_prmt_mixed53llvm.func @test_prmt_mixed(%sel: i32, %lo: i32, %hi: i32) -> i32 {54 // CHECK: call i32 @llvm.nvvm.prmt(i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})55 %r1 = nvvm.prmt #nvvm.permute_mode<default> %sel, %lo, %hi : i3256 57 // CHECK: call i32 @llvm.nvvm.prmt.rc8(i32 %{{.*}}, i32 %{{.*}})58 %r2 = nvvm.prmt #nvvm.permute_mode<rc8> %sel, %r1 : i3259 60 // CHECK: call i32 @llvm.nvvm.prmt.f4e(i32 %{{.*}}, i32 %{{.*}}, i32 %{{.*}})61 %r3 = nvvm.prmt #nvvm.permute_mode<f4e> %lo, %r2, %sel : i3262 63 llvm.return %r3 : i3264}65