mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-04 21:30:49 +00:00
eacb7020ec
Update the test suite to accommodate the change from signed integer types to signless integer types. The changes were of only a few kinds: 1. Make sure llvm-upgrade is run on the source which does the bulk of the changes automatically. 2. Change things like "grep 'int'" to "grep 'i32'" 3. In several tests bitcasting caused the same name to be reused in the same type plane. These had to be manually fixed. The fix was (generally) to leave the bitcast and provide the instruction with a new name. This should not affect the semantics of the test. In a few cases, the bitcasts were known to be superfluous and irrelevant to the test case so they were removed. 4. One test case uses a bytecode file which needed to be updated to the latest bytecode format. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32789 91177308-0d34-0410-b5e6-96231b3b80d8
63 lines
1.4 KiB
LLVM
63 lines
1.4 KiB
LLVM
; An integer truncation to bool should be done with an and instruction to make
|
|
; sure only the LSBit survives. Test that this is the case both for a returned
|
|
; value and as the operand of a branch.
|
|
; RUN: llvm-as < %s | llc -march=x86 &&
|
|
; RUN: llvm-as < %s | llc -march=x86 | grep '\(and\)\|\(test.*\$1\)' | \
|
|
; RUN: wc -l | grep 6
|
|
|
|
define bool @zext %test1(i32 %X) {
|
|
%Y = trunc i32 %X to bool
|
|
ret bool %Y
|
|
}
|
|
|
|
define bool %test2(i32 %val, i32 %mask) {
|
|
entry:
|
|
%mask = trunc i32 %mask to i8
|
|
%shifted = ashr i32 %val, i8 %mask
|
|
%anded = and i32 %shifted, 1
|
|
%trunced = trunc i32 %anded to bool
|
|
br bool %trunced, label %ret_true, label %ret_false
|
|
ret_true:
|
|
ret bool true
|
|
ret_false:
|
|
ret bool false
|
|
}
|
|
|
|
define i32 %test3(i8* %ptr) {
|
|
%val = load i8* %ptr
|
|
%tmp = trunc i8 %val to bool
|
|
br bool %tmp, label %cond_true, label %cond_false
|
|
cond_true:
|
|
ret i32 21
|
|
cond_false:
|
|
ret i32 42
|
|
}
|
|
|
|
define i32 %test4(i8* %ptr) {
|
|
%tmp = ptrtoint i8* %ptr to bool
|
|
br bool %tmp, label %cond_true, label %cond_false
|
|
cond_true:
|
|
ret i32 21
|
|
cond_false:
|
|
ret i32 42
|
|
}
|
|
|
|
define i32 %test5(float %f) {
|
|
%tmp = fptoui float %f to bool
|
|
br bool %tmp, label %cond_true, label %cond_false
|
|
cond_true:
|
|
ret i32 21
|
|
cond_false:
|
|
ret i32 42
|
|
}
|
|
|
|
define i32 %test6(double %d) {
|
|
%tmp = fptosi double %d to bool
|
|
br bool %tmp, label %cond_true, label %cond_false
|
|
cond_true:
|
|
ret i32 21
|
|
cond_false:
|
|
ret i32 42
|
|
}
|
|
|