Fix comparison predicates
This commit is contained in:
parent
c4df65d189
commit
e55d87d378
@ -68,3 +68,23 @@ testString (test,
|
|||||||
}
|
}
|
||||||
`)
|
`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestCompare (test *testing.T) {
|
||||||
|
testString (test,
|
||||||
|
`%Bool = type i8
|
||||||
|
define %Bool @main() {
|
||||||
|
0:
|
||||||
|
%1 = alloca i64
|
||||||
|
store i64 32, ptr %1
|
||||||
|
%2 = load i64, ptr %1
|
||||||
|
%3 = icmp sgt i64 %2, 1
|
||||||
|
ret i1 %3
|
||||||
|
}
|
||||||
|
`,
|
||||||
|
`
|
||||||
|
[main]:Bool = {
|
||||||
|
x:Int = 32
|
||||||
|
[> x 1]
|
||||||
|
}
|
||||||
|
`)
|
||||||
|
}
|
||||||
|
@ -607,6 +607,7 @@ func (this *Block) NewFCmp (predicate FPredicate, x, y Value) *InstructionFCmp {
|
|||||||
instruction.Token = "fcmp"
|
instruction.Token = "fcmp"
|
||||||
instruction.X = x
|
instruction.X = x
|
||||||
instruction.Y = y
|
instruction.Y = y
|
||||||
|
instruction.Predicate = predicate
|
||||||
switch xType := x.Type().(type) {
|
switch xType := x.Type().(type) {
|
||||||
case *TypeFloat:
|
case *TypeFloat:
|
||||||
instruction.Ty = &TypeInt { BitSize: 1 }
|
instruction.Ty = &TypeInt { BitSize: 1 }
|
||||||
@ -879,6 +880,7 @@ func (this *Block) NewICmp (predicate IPredicate, x, y Value) *InstructionICmp {
|
|||||||
instruction.Token = "icmp"
|
instruction.Token = "icmp"
|
||||||
instruction.X = x
|
instruction.X = x
|
||||||
instruction.Y = y
|
instruction.Y = y
|
||||||
|
instruction.Predicate = predicate
|
||||||
switch xType := x.Type().(type) {
|
switch xType := x.Type().(type) {
|
||||||
case *TypeInt, *TypePointer:
|
case *TypeInt, *TypePointer:
|
||||||
instruction.Ty = &TypeInt { BitSize: 1 }
|
instruction.Ty = &TypeInt { BitSize: 1 }
|
||||||
|
Loading…
Reference in New Issue
Block a user