Skip to content

CBE doesn't support vectors yet #1498

@llvmbot

Description

@llvmbot
Bugzilla Link 1126
Resolution FIXED
Resolved on Mar 02, 2008 02:21
Version trunk
OS All
Blocks llvm/llvm-bugzilla-archive#1481
Reporter LLVM Bugzilla Contributor
CC @nlewycky

Extended Description

Noticed through inspection.

% cat cbev.ll
define <4 x i32> %foo(<4 x i32> %a, <4 x i32> %b) {
%c = sub <4 x i32> %a, %b
%d = add <4 x i32> %b, %c
%e = mul <4 x i32> %c, %d
; %f = udiv <4 x i32> %d, %e ; Fails an assertion in CBackend.cpp
; %g = sdiv <4 x i32> %e, %f ; Same
ret <4 x i32> %e
}
% llvm-as -o cbev.bc cbev.ll
% llc -march=c -o cbev.c cbev.bc
% tail -n 7 cbev.c
unsigned int foo(unsigned int ltmp_0_1[4], unsigned int ltmp_1_1[4])[4] {
unsigned int ltmp_2_1[4];

ltmp_2_1 = ltmp_0_1 - ltmp_1_1;
return (ltmp_2_1*(ltmp_1_1 + ltmp_2_1));
}

% gcc -o cbev.o -c cbev.c
cbev.c:106: error: ‘foo’ declared as function returning an array
cbev.c:107: warning: conflicting types for built-in function ‘malloc’
cbev.c:129: error: ‘foo’ declared as function returning an array
cbev.c: In function ‘foo’:
cbev.c:132: error: incompatible types in assignment
cbev.c:133: error: invalid operands to binary +

An error message, inserting a vector lowering pass before the CBE, or fixing the codegen would all be
improvements.

Emitting Altivec 'vector' types instead of arrays would make fixing the codegen relatively easy when
targetting PowerPC, since Altivec provides operator overloads for vector ops.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugzillaIssues migrated from bugzillaenhancementImproving things as opposed to bug fixing, e.g. new or missing feature

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions