brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · c480ecf Raw
38 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_test_checks.py2; RUN: opt < %s -mtriple=amdgcn-amd-amdhsa -passes=instcombine -S | FileCheck %s3 4; Optimize the intrinsic away if the argument is uniform.5define i32 @test_constant() {6; CHECK-LABEL: @test_constant(7; CHECK-NEXT:    ret i32 998;9  %call = call i32 @llvm.amdgcn.permlane64.i32(i32 99)10  ret i32 %call11}12 13define i32 @test_bitcast_f32_to_i32_permlane64(float %val) {14; CHECK-LABEL: @test_bitcast_f32_to_i32_permlane64(15; CHECK-NEXT:    [[VAL:%.*]] = call float @llvm.amdgcn.permlane64.f32(float [[VAL1:%.*]])16; CHECK-NEXT:    [[BITCAST:%.*]] = bitcast float [[VAL]] to i3217; CHECK-NEXT:    ret i32 [[BITCAST]]18;19  %bitcast = bitcast float %val to i3220  %result = call i32 @llvm.amdgcn.permlane64.i32(i32 %bitcast)21  ret i32 %result22}23 24define i32 @test_bitcast_f32_to_i32_permlane64_convergencetokenn(float %val) convergent {25; CHECK-LABEL: @test_bitcast_f32_to_i32_permlane64_convergencetokenn(26; CHECK-NEXT:    [[T:%.*]] = call token @llvm.experimental.convergence.entry()27; CHECK-NEXT:    [[VAL:%.*]] = call float @llvm.amdgcn.permlane64.f32(float [[VAL1:%.*]]) [ "convergencectrl"(token [[T]]) ]28; CHECK-NEXT:    [[BITCAST:%.*]] = bitcast float [[VAL]] to i3229; CHECK-NEXT:    ret i32 [[BITCAST]]30;31  %t = call token @llvm.experimental.convergence.entry()32  %bitcast = bitcast float %val to i3233  %result = call i32 @llvm.amdgcn.permlane64.i32(i32 %bitcast) [ "convergencectrl"(token %t) ]34  ret i32 %result35}36 37declare i32 @llvm.amdgcn.permlane64.i32(i32)38