blob: 576bafebd61240e35ddb6f94158f55dea09f7e13 [file] [edit]
; RUN: llc -O0 -mtriple=spirv64-unknown-unknown < %s | FileCheck %s
; RUN: %if spirv-tools %{ llc -O0 -mtriple=spirv64-unknown-unknown -filetype=obj < %s | spirv-val %}
define spir_func i1 @ugt(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function ugt
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp ugt i1 %p, %q
ret i1 %r
}
define spir_func i1 @ugt_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function ugt_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp samesign ugt i1 %p, %q
ret i1 %r
}
define spir_func i1 @uge(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function uge
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp uge i1 %p, %q
ret i1 %r
}
define spir_func i1 @uge_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function uge_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp samesign uge i1 %p, %q
ret i1 %r
}
define spir_func i1 @ult(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function ult
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp ult i1 %p, %q
ret i1 %r
}
define spir_func i1 @ult_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function ult_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp samesign ult i1 %p, %q
ret i1 %r
}
define spir_func i1 @ule(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function ule
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp ule i1 %p, %q
ret i1 %r
}
define spir_func i1 @ule_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function ule_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp samesign ule i1 %p, %q
ret i1 %r
}
define spir_func i1 @sgt(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function sgt
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp sgt i1 %p, %q
ret i1 %r
}
define spir_func i1 @sgt_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function sgt_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp samesign sgt i1 %p, %q
ret i1 %r
}
define spir_func i1 @sge(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function sge
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp sge i1 %p, %q
ret i1 %r
}
define spir_func i1 @sge_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function sge_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp samesign sge i1 %p, %q
ret i1 %r
}
define spir_func i1 @slt(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function slt
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp slt i1 %p, %q
ret i1 %r
}
define spir_func i1 @slt_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function slt_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalAnd
%r = icmp samesign slt i1 %p, %q
ret i1 %r
}
define spir_func i1 @sle(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function sle
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp sle i1 %p, %q
ret i1 %r
}
define spir_func i1 @sle_same_sign(i1 %p, i1 %q) addrspace(4) {
; CHECK: Begin function sle_same_sign
; CHECK: OpLogicalNotEqual
; CHECK: OpLogicalOr
%r = icmp samesign sle i1 %p, %q
ret i1 %r
}