mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-08-09 11:25:55 +00:00
For PR1297:
Update these test cases to use proper signatures for bswap which is now and overloaded intrinsic. Its name must be of the form llvm.bswap.i32.i32 since both the parameter and the result or of type "iAny". Also, the bit counting intrinsics changed to always return i32. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35548 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1,59 +1,59 @@
|
|||||||
; Make sure this testcase is supported by all code generators
|
; Make sure this testcase is supported by all code generators
|
||||||
; RUN: llvm-upgrade < %s | llvm-as | llc
|
; RUN: llvm-upgrade < %s | llvm-as | llc
|
||||||
|
|
||||||
declare ulong %llvm.ctpop.i64(ulong)
|
declare uint %llvm.ctpop.i64(ulong)
|
||||||
declare uint %llvm.ctpop.i32(uint)
|
declare uint %llvm.ctpop.i32(uint)
|
||||||
declare ushort %llvm.ctpop.i16(ushort)
|
declare uint %llvm.ctpop.i16(ushort)
|
||||||
declare ubyte %llvm.ctpop.i8(ubyte)
|
declare uint %llvm.ctpop.i8(ubyte)
|
||||||
|
|
||||||
void %ctpoptest(ubyte %A, ushort %B, uint %C, ulong %D,
|
void %ctpoptest(ubyte %A, ushort %B, uint %C, ulong %D,
|
||||||
ubyte *%AP, ushort* %BP, uint* %CP, ulong* %DP) {
|
uint *%AP, uint* %BP, uint* %CP, uint* %DP) {
|
||||||
%a = call ubyte %llvm.ctpop.i8(ubyte %A)
|
%a = call uint %llvm.ctpop.i8(ubyte %A)
|
||||||
%b = call ushort %llvm.ctpop.i16(ushort %B)
|
%b = call uint %llvm.ctpop.i16(ushort %B)
|
||||||
%c = call uint %llvm.ctpop.i32(uint %C)
|
%c = call uint %llvm.ctpop.i32(uint %C)
|
||||||
%d = call ulong %llvm.ctpop.i64(ulong %D)
|
%d = call uint %llvm.ctpop.i64(ulong %D)
|
||||||
|
|
||||||
store ubyte %a, ubyte* %AP
|
store uint %a, uint* %AP
|
||||||
store ushort %b, ushort* %BP
|
store uint %b, uint* %BP
|
||||||
store uint %c, uint* %CP
|
store uint %c, uint* %CP
|
||||||
store ulong %d, ulong* %DP
|
store uint %d, uint* %DP
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
declare ulong %llvm.ctlz.i64(ulong)
|
declare uint %llvm.ctlz.i64(ulong)
|
||||||
declare uint %llvm.ctlz.i32(uint)
|
declare uint %llvm.ctlz.i32(uint)
|
||||||
declare ushort %llvm.ctlz.i16(ushort)
|
declare uint %llvm.ctlz.i16(ushort)
|
||||||
declare ubyte %llvm.ctlz.i8(ubyte)
|
declare uint %llvm.ctlz.i8(ubyte)
|
||||||
|
|
||||||
void %ctlztest(ubyte %A, ushort %B, uint %C, ulong %D,
|
void %ctlztest(ubyte %A, ushort %B, uint %C, ulong %D,
|
||||||
ubyte *%AP, ushort* %BP, uint* %CP, ulong* %DP) {
|
uint *%AP, uint* %BP, uint* %CP, uint* %DP) {
|
||||||
%a = call ubyte %llvm.ctlz.i8(ubyte %A)
|
%a = call uint %llvm.ctlz.i8(ubyte %A)
|
||||||
%b = call ushort %llvm.ctlz.i16(ushort %B)
|
%b = call uint %llvm.ctlz.i16(ushort %B)
|
||||||
%c = call uint %llvm.ctlz.i32(uint %C)
|
%c = call uint %llvm.ctlz.i32(uint %C)
|
||||||
%d = call ulong %llvm.ctlz.i64(ulong %D)
|
%d = call uint %llvm.ctlz.i64(ulong %D)
|
||||||
|
|
||||||
store ubyte %a, ubyte* %AP
|
store uint %a, uint* %AP
|
||||||
store ushort %b, ushort* %BP
|
store uint %b, uint* %BP
|
||||||
store uint %c, uint* %CP
|
store uint %c, uint* %CP
|
||||||
store ulong %d, ulong* %DP
|
store uint %d, uint* %DP
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
declare ulong %llvm.cttz.i64(ulong)
|
declare uint %llvm.cttz.i64(ulong)
|
||||||
declare uint %llvm.cttz.i32(uint)
|
declare uint %llvm.cttz.i32(uint)
|
||||||
declare ushort %llvm.cttz.i16(ushort)
|
declare uint %llvm.cttz.i16(ushort)
|
||||||
declare ubyte %llvm.cttz.i8(ubyte)
|
declare uint %llvm.cttz.i8(ubyte)
|
||||||
|
|
||||||
void %cttztest(ubyte %A, ushort %B, uint %C, ulong %D,
|
void %cttztest(ubyte %A, ushort %B, uint %C, ulong %D,
|
||||||
ubyte *%AP, ushort* %BP, uint* %CP, ulong* %DP) {
|
uint *%AP, uint* %BP, uint* %CP, uint* %DP) {
|
||||||
%a = call ubyte %llvm.cttz.i8(ubyte %A)
|
%a = call uint %llvm.cttz.i8(ubyte %A)
|
||||||
%b = call ushort %llvm.cttz.i16(ushort %B)
|
%b = call uint %llvm.cttz.i16(ushort %B)
|
||||||
%c = call uint %llvm.cttz.i32(uint %C)
|
%c = call uint %llvm.cttz.i32(uint %C)
|
||||||
%d = call ulong %llvm.cttz.i64(ulong %D)
|
%d = call uint %llvm.cttz.i64(ulong %D)
|
||||||
|
|
||||||
store ubyte %a, ubyte* %AP
|
store uint %a, uint* %AP
|
||||||
store ushort %b, ushort* %BP
|
store uint %b, uint* %BP
|
||||||
store uint %c, uint* %CP
|
store uint %c, uint* %CP
|
||||||
store ulong %d, ulong* %DP
|
store uint %d, uint* %DP
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
@@ -2,9 +2,9 @@
|
|||||||
|
|
||||||
void %img2buf(int %symbol_size_in_bytes, ushort* %ui16) {
|
void %img2buf(int %symbol_size_in_bytes, ushort* %ui16) {
|
||||||
%tmp93 = load ushort* null ; <ushort> [#uses=1]
|
%tmp93 = load ushort* null ; <ushort> [#uses=1]
|
||||||
%tmp99 = call ushort %llvm.bswap.i16( ushort %tmp93 ) ; <ushort> [#uses=1]
|
%tmp99 = call ushort %llvm.bswap.i16.i16( ushort %tmp93 ) ; <ushort> [#uses=1]
|
||||||
store ushort %tmp99, ushort* %ui16
|
store ushort %tmp99, ushort* %ui16
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
declare ushort %llvm.bswap.i16(ushort)
|
declare ushort %llvm.bswap.i16.i16(ushort)
|
||||||
|
@@ -2,12 +2,10 @@
|
|||||||
|
|
||||||
define i32 @_ZNK4llvm5APInt17countLeadingZerosEv(i64 *%t) {
|
define i32 @_ZNK4llvm5APInt17countLeadingZerosEv(i64 *%t) {
|
||||||
%tmp19 = load i64* %t
|
%tmp19 = load i64* %t
|
||||||
%tmp23 = tail call i64 @llvm.ctlz.i64( i64 %tmp19 ) ; <i64> [#uses=1]
|
%tmp23 = tail call i32 @llvm.ctlz.i64( i64 %tmp19 ) ; <i64> [#uses=1]
|
||||||
%tmp2324 = trunc i64 %tmp23 to i32 ; <i32> [#uses=1]
|
%tmp89 = add i32 %tmp23, -64 ; <i32> [#uses=1]
|
||||||
%tmp89 = add i32 %tmp2324, -64 ; <i32> [#uses=1]
|
%tmp90 = add i32 %tmp89, 0 ; <i32> [#uses=1]
|
||||||
%tmp90 = add i32 %tmp89, 0 ; <i32> [#uses=1]
|
|
||||||
ret i32 %tmp90
|
ret i32 %tmp90
|
||||||
}
|
}
|
||||||
|
|
||||||
declare i64 @llvm.ctlz.i64(i64)
|
declare i32 @llvm.ctlz.i64(i64)
|
||||||
|
|
||||||
|
@@ -8,7 +8,7 @@
|
|||||||
void %STWBRX(uint %i, sbyte* %ptr, int %off) {
|
void %STWBRX(uint %i, sbyte* %ptr, int %off) {
|
||||||
%tmp1 = getelementptr sbyte* %ptr, int %off
|
%tmp1 = getelementptr sbyte* %ptr, int %off
|
||||||
%tmp1 = cast sbyte* %tmp1 to uint*
|
%tmp1 = cast sbyte* %tmp1 to uint*
|
||||||
%tmp13 = tail call uint %llvm.bswap.i32(uint %i)
|
%tmp13 = tail call uint %llvm.bswap.i32.i32(uint %i)
|
||||||
store uint %tmp13, uint* %tmp1
|
store uint %tmp13, uint* %tmp1
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
@@ -17,14 +17,14 @@ uint %LWBRX(sbyte* %ptr, int %off) {
|
|||||||
%tmp1 = getelementptr sbyte* %ptr, int %off
|
%tmp1 = getelementptr sbyte* %ptr, int %off
|
||||||
%tmp1 = cast sbyte* %tmp1 to uint*
|
%tmp1 = cast sbyte* %tmp1 to uint*
|
||||||
%tmp = load uint* %tmp1
|
%tmp = load uint* %tmp1
|
||||||
%tmp14 = tail call uint %llvm.bswap.i32( uint %tmp )
|
%tmp14 = tail call uint %llvm.bswap.i32.i32( uint %tmp )
|
||||||
ret uint %tmp14
|
ret uint %tmp14
|
||||||
}
|
}
|
||||||
|
|
||||||
void %STHBRX(ushort %s, sbyte* %ptr, int %off) {
|
void %STHBRX(ushort %s, sbyte* %ptr, int %off) {
|
||||||
%tmp1 = getelementptr sbyte* %ptr, int %off
|
%tmp1 = getelementptr sbyte* %ptr, int %off
|
||||||
%tmp1 = cast sbyte* %tmp1 to ushort*
|
%tmp1 = cast sbyte* %tmp1 to ushort*
|
||||||
%tmp5 = call ushort %llvm.bswap.i16( ushort %s )
|
%tmp5 = call ushort %llvm.bswap.i16.i16( ushort %s )
|
||||||
store ushort %tmp5, ushort* %tmp1
|
store ushort %tmp5, ushort* %tmp1
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
@@ -33,10 +33,10 @@ ushort %LHBRX(sbyte* %ptr, int %off) {
|
|||||||
%tmp1 = getelementptr sbyte* %ptr, int %off
|
%tmp1 = getelementptr sbyte* %ptr, int %off
|
||||||
%tmp1 = cast sbyte* %tmp1 to ushort*
|
%tmp1 = cast sbyte* %tmp1 to ushort*
|
||||||
%tmp = load ushort* %tmp1
|
%tmp = load ushort* %tmp1
|
||||||
%tmp6 = call ushort %llvm.bswap.i16(ushort %tmp)
|
%tmp6 = call ushort %llvm.bswap.i16.i16(ushort %tmp)
|
||||||
ret ushort %tmp6
|
ret ushort %tmp6
|
||||||
}
|
}
|
||||||
|
|
||||||
declare uint %llvm.bswap.i32(uint)
|
declare uint %llvm.bswap.i32.i32(uint)
|
||||||
|
|
||||||
declare ushort %llvm.bswap.i16(ushort)
|
declare ushort %llvm.bswap.i16.i16(ushort)
|
||||||
|
@@ -3,21 +3,21 @@
|
|||||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep bswapl | wc -l | grep 3 &&
|
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep bswapl | wc -l | grep 3 &&
|
||||||
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep rolw | wc -l | grep 1
|
; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep rolw | wc -l | grep 1
|
||||||
|
|
||||||
declare ushort %llvm.bswap.i16(ushort)
|
declare ushort %llvm.bswap.i16.i16(ushort)
|
||||||
declare uint %llvm.bswap.i32(uint)
|
declare uint %llvm.bswap.i32.i32(uint)
|
||||||
declare ulong %llvm.bswap.i64(ulong)
|
declare ulong %llvm.bswap.i64.i64(ulong)
|
||||||
|
|
||||||
ushort %W(ushort %A) {
|
ushort %W(ushort %A) {
|
||||||
%Z = call ushort %llvm.bswap.i16(ushort %A)
|
%Z = call ushort %llvm.bswap.i16.i16(ushort %A)
|
||||||
ret ushort %Z
|
ret ushort %Z
|
||||||
}
|
}
|
||||||
|
|
||||||
uint %X(uint %A) {
|
uint %X(uint %A) {
|
||||||
%Z = call uint %llvm.bswap.i32(uint %A)
|
%Z = call uint %llvm.bswap.i32.i32(uint %A)
|
||||||
ret uint %Z
|
ret uint %Z
|
||||||
}
|
}
|
||||||
|
|
||||||
ulong %Y(ulong %A) {
|
ulong %Y(ulong %A) {
|
||||||
%Z = call ulong %llvm.bswap.i64(ulong %A)
|
%Z = call ulong %llvm.bswap.i64.i64(ulong %A)
|
||||||
ret ulong %Z
|
ret ulong %Z
|
||||||
}
|
}
|
||||||
|
@@ -8,20 +8,20 @@ declare bool %llvm.isunordered.f64(double,double)
|
|||||||
|
|
||||||
declare void %llvm.prefetch(sbyte*, uint, uint)
|
declare void %llvm.prefetch(sbyte*, uint, uint)
|
||||||
|
|
||||||
declare ubyte %llvm.ctpop.i8(ubyte)
|
declare uint %llvm.ctpop.i8(ubyte)
|
||||||
declare ushort %llvm.ctpop.i16(ushort)
|
declare uint %llvm.ctpop.i16(ushort)
|
||||||
declare uint %llvm.ctpop.i32(uint)
|
declare uint %llvm.ctpop.i32(uint)
|
||||||
declare ulong %llvm.ctpop.i64(ulong)
|
declare uint %llvm.ctpop.i64(ulong)
|
||||||
|
|
||||||
declare ubyte %llvm.cttz.i8(ubyte)
|
declare uint %llvm.cttz.i8(ubyte)
|
||||||
declare ushort %llvm.cttz.i16(ushort)
|
declare uint %llvm.cttz.i16(ushort)
|
||||||
declare uint %llvm.cttz.i32(uint)
|
declare uint %llvm.cttz.i32(uint)
|
||||||
declare ulong %llvm.cttz.i64(ulong)
|
declare uint %llvm.cttz.i64(ulong)
|
||||||
|
|
||||||
declare ubyte %llvm.ctlz.i8(ubyte)
|
declare uint %llvm.ctlz.i8(ubyte)
|
||||||
declare ushort %llvm.ctlz.i16(ushort)
|
declare uint %llvm.ctlz.i16(ushort)
|
||||||
declare uint %llvm.ctlz.i32(uint)
|
declare uint %llvm.ctlz.i32(uint)
|
||||||
declare ulong %llvm.ctlz.i64(ulong)
|
declare uint %llvm.ctlz.i64(ulong)
|
||||||
|
|
||||||
declare float %llvm.sqrt.f32(float)
|
declare float %llvm.sqrt.f32(float)
|
||||||
declare double %llvm.sqrt.f64(double)
|
declare double %llvm.sqrt.f64(double)
|
||||||
@@ -39,20 +39,20 @@ void %libm() {
|
|||||||
call float %llvm.sqrt.f32(float 5.0)
|
call float %llvm.sqrt.f32(float 5.0)
|
||||||
call double %llvm.sqrt.f64(double 6.0)
|
call double %llvm.sqrt.f64(double 6.0)
|
||||||
|
|
||||||
call ubyte %llvm.ctpop.i8(ubyte 10)
|
call uint %llvm.ctpop.i8(ubyte 10)
|
||||||
call ushort %llvm.ctpop.i16(ushort 11)
|
call uint %llvm.ctpop.i16(ushort 11)
|
||||||
call uint %llvm.ctpop.i32(uint 12)
|
call uint %llvm.ctpop.i32(uint 12)
|
||||||
call ulong %llvm.ctpop.i64(ulong 13)
|
call uint %llvm.ctpop.i64(ulong 13)
|
||||||
|
|
||||||
call ubyte %llvm.ctlz.i8(ubyte 14)
|
call uint %llvm.ctlz.i8(ubyte 14)
|
||||||
call ushort %llvm.ctlz.i16(ushort 15)
|
call uint %llvm.ctlz.i16(ushort 15)
|
||||||
call uint %llvm.ctlz.i32(uint 16)
|
call uint %llvm.ctlz.i32(uint 16)
|
||||||
call ulong %llvm.ctlz.i64(ulong 17)
|
call uint %llvm.ctlz.i64(ulong 17)
|
||||||
|
|
||||||
call ubyte %llvm.cttz.i8(ubyte 18)
|
call uint %llvm.cttz.i8(ubyte 18)
|
||||||
call ushort %llvm.cttz.i16(ushort 19)
|
call uint %llvm.cttz.i16(ushort 19)
|
||||||
call uint %llvm.cttz.i32(uint 20)
|
call uint %llvm.cttz.i32(uint 20)
|
||||||
call ulong %llvm.cttz.i64(ulong 21)
|
call uint %llvm.cttz.i64(ulong 21)
|
||||||
ret void
|
ret void
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,25 +2,25 @@
|
|||||||
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep 'call.*bswap'
|
; RUN: llvm-upgrade < %s | llvm-as | opt -instcombine | llvm-dis | not grep 'call.*bswap'
|
||||||
|
|
||||||
bool %test1(ushort %tmp2) {
|
bool %test1(ushort %tmp2) {
|
||||||
%tmp10 = call ushort %llvm.bswap.i16( ushort %tmp2 )
|
%tmp10 = call ushort %llvm.bswap.i16.i16( ushort %tmp2 )
|
||||||
%tmp = seteq ushort %tmp10, 1
|
%tmp = seteq ushort %tmp10, 1
|
||||||
ret bool %tmp
|
ret bool %tmp
|
||||||
}
|
}
|
||||||
|
|
||||||
bool %test2(uint %tmp) {
|
bool %test2(uint %tmp) {
|
||||||
%tmp34 = tail call uint %llvm.bswap.i32( uint %tmp )
|
%tmp34 = tail call uint %llvm.bswap.i32.i32( uint %tmp )
|
||||||
%tmp = seteq uint %tmp34, 1
|
%tmp = seteq uint %tmp34, 1
|
||||||
ret bool %tmp
|
ret bool %tmp
|
||||||
}
|
}
|
||||||
|
|
||||||
declare uint %llvm.bswap.i32(uint)
|
|
||||||
|
|
||||||
bool %test3(ulong %tmp) {
|
bool %test3(ulong %tmp) {
|
||||||
%tmp34 = tail call ulong %llvm.bswap.i64( ulong %tmp )
|
%tmp34 = tail call ulong %llvm.bswap.i64.i64( ulong %tmp )
|
||||||
%tmp = seteq ulong %tmp34, 1
|
%tmp = seteq ulong %tmp34, 1
|
||||||
ret bool %tmp
|
ret bool %tmp
|
||||||
}
|
}
|
||||||
|
|
||||||
declare ulong %llvm.bswap.i64(ulong)
|
declare ulong %llvm.bswap.i64.i64(ulong)
|
||||||
|
|
||||||
declare ushort %llvm.bswap.i16(ushort)
|
declare ushort %llvm.bswap.i16.i16(ushort)
|
||||||
|
|
||||||
|
declare uint %llvm.bswap.i32.i32(uint)
|
||||||
|
Reference in New Issue
Block a user