-
Couldn't load subscription status.
- Fork 29
Open
Description
I am getting the following error with bfloat16 vector addition, using accumulator in float32.
llc input.opt.ll -O2 --march=aie2 --function-sections --filetype=obj -o input.o
LLVM ERROR: unable to legalize instruction: %68:_(<8 x s32>) = G_FPEXT %67:_(<8 x s16>) (in function: core_0_2)
Input file:
; ModuleID = '/home/erweiw/mlir-air/test/xrt/40_triton_vec_add/debug/air_project/input.llpeanohack.ll'
source_filename = "LLVMDialectModule"
target datalayout = "e-m:e-p:20:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-f32:32:32-i64:32-f64:32-a:0:32-n32"
target triple = "aie2"
@buf0 = external local_unnamed_addr global [64 x float]
@buf1 = external local_unnamed_addr global [64 x bfloat]
@buf2 = external local_unnamed_addr global [64 x bfloat]
@buf3 = external local_unnamed_addr global [64 x float]
@buf4 = external local_unnamed_addr global [64 x bfloat]
@buf5 = external local_unnamed_addr global [64 x bfloat]
@buf6 = external local_unnamed_addr global [64 x float]
@buf7 = external local_unnamed_addr global [64 x bfloat]
@buf8 = external local_unnamed_addr global [64 x bfloat]
@buf9 = external local_unnamed_addr global [64 x float]
@buf10 = external local_unnamed_addr global [64 x bfloat]
@buf11 = external local_unnamed_addr global [64 x bfloat]
; Function Attrs: nounwind
declare void @llvm.aie2.acquire(i32, i32) #0
; Function Attrs: nounwind
declare void @llvm.aie2.release(i32, i32) #0
; Function Attrs: noreturn nounwind
define void @core_0_2() local_unnamed_addr #1 {
br label %1
1: ; preds = %1, %0
tail call void @llvm.aie2.acquire(i32 49, i32 -1)
tail call void @llvm.aie2.acquire(i32 50, i32 -1)
tail call void @llvm.aie2.acquire(i32 52, i32 -1)
%2 = load <8 x bfloat>, ptr @buf2, align 16
%3 = load <8 x bfloat>, ptr @buf1, align 16
%4 = fadd <8 x bfloat> %2, %3
%5 = fpext <8 x bfloat> %4 to <8 x float>
store <8 x float> %5, ptr @buf0, align 32
%6 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 16), align 16
%7 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 16), align 16
%8 = fadd <8 x bfloat> %6, %7
%9 = fpext <8 x bfloat> %8 to <8 x float>
store <8 x float> %9, ptr getelementptr inbounds (i8, ptr @buf0, i20 32), align 32
%10 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 32), align 16
%11 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 32), align 16
%12 = fadd <8 x bfloat> %10, %11
%13 = fpext <8 x bfloat> %12 to <8 x float>
store <8 x float> %13, ptr getelementptr inbounds (i8, ptr @buf0, i20 64), align 32
%14 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 48), align 16
%15 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 48), align 16
%16 = fadd <8 x bfloat> %14, %15
%17 = fpext <8 x bfloat> %16 to <8 x float>
store <8 x float> %17, ptr getelementptr inbounds (i8, ptr @buf0, i20 96), align 32
%18 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 64), align 16
%19 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 64), align 16
%20 = fadd <8 x bfloat> %18, %19
%21 = fpext <8 x bfloat> %20 to <8 x float>
store <8 x float> %21, ptr getelementptr inbounds (i8, ptr @buf0, i20 128), align 32
%22 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 80), align 16
%23 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 80), align 16
%24 = fadd <8 x bfloat> %22, %23
%25 = fpext <8 x bfloat> %24 to <8 x float>
store <8 x float> %25, ptr getelementptr inbounds (i8, ptr @buf0, i20 160), align 32
%26 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 96), align 16
%27 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 96), align 16
%28 = fadd <8 x bfloat> %26, %27
%29 = fpext <8 x bfloat> %28 to <8 x float>
store <8 x float> %29, ptr getelementptr inbounds (i8, ptr @buf0, i20 192), align 32
%30 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf2, i20 112), align 16
%31 = load <8 x bfloat>, ptr getelementptr inbounds (i8, ptr @buf1, i20 112), align 16
%32 = fadd <8 x bfloat> %30, %31
%33 = fpext <8 x bfloat> %32 to <8 x float>
store <8 x float> %33, ptr getelementptr inbounds (i8, ptr @buf0, i20 224), align 32
tail call void @llvm.aie2.release(i32 51, i32 1)
tail call void @llvm.aie2.release(i32 53, i32 1)
tail call void @llvm.aie2.release(i32 48, i32 1)
br label %1
}
Metadata
Metadata
Assignees
Labels
No labels