blob: 84eaae253291cc638ed6407e5d713e65f6679ba2 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 6
; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefixes=RV32I
; RUN: llc -mtriple=riscv32 -mattr=+xqcibi -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefixes=RV32IXQCIBI
; RUN: llc -mtriple=riscv32 -mattr=+xqcibi,+xqcili -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefixes=RV32IXQCIBILI
define dso_local i32 @test_beqi(i32 %a) nounwind {
; RV32I-LABEL: test_beqi:
; RV32I: # %bb.0: # %entry
; RV32I-NEXT: li a1, 7
; RV32I-NEXT: bne a0, a1, .LBB0_2
; RV32I-NEXT: # %bb.1: # %if.end
; RV32I-NEXT: li a0, 7
; RV32I-NEXT: ret
; RV32I-NEXT: .LBB0_2: # %if.then
; RV32I-NEXT: li a0, 1
; RV32I-NEXT: ret
;
; RV32IXQC-LABEL: test_beqi:
; RV32IXQC: # %bb.0: # %entry
; RV32IXQC-NEXT: qc.beqi a0, 7, .LBB0_2
; RV32IXQC-NEXT: # %bb.1: # %if.then
; RV32IXQC-NEXT: li a0, 1
; RV32IXQC-NEXT: .LBB0_2: # %if.end
; RV32IXQC-NEXT: ret
entry:
%cmp = icmp eq i32 %a, 7
br i1 %cmp, label %if.end, label %if.then
if.then:
ret i32 1
if.end:
ret i32 7
}
define dso_local i32 @test_e_beqi(i32 %a) nounwind {
; RV32I-LABEL: test_e_beqi:
; RV32I: # %bb.0: # %entry
; RV32I-NEXT: li a1, 40
; RV32I-NEXT: bne a0, a1, .LBB1_2
; RV32I-NEXT: # %bb.1: # %if.end
; RV32I-NEXT: li a0, 40
; RV32I-NEXT: ret
; RV32I-NEXT: .LBB1_2: # %if.then
; RV32I-NEXT: li a0, 1
; RV32I-NEXT: ret
;
; RV32IXQC-LABEL: test_e_beqi:
; RV32IXQC: # %bb.0: # %entry
; RV32IXQC-NEXT: qc.e.beqi a0, 40, .LBB1_2
; RV32IXQC-NEXT: # %bb.1: # %if.then
; RV32IXQC-NEXT: li a0, 1
; RV32IXQC-NEXT: .LBB1_2: # %if.end
; RV32IXQC-NEXT: ret
entry:
%cmp = icmp eq i32 %a, 40
br i1 %cmp, label %if.end, label %if.then
if.then:
ret i32 1
if.end:
ret i32 40
}
define dso_local i32 @test_e_beqi_li(i32 %a) nounwind {
; RV32I-LABEL: test_e_beqi_li:
; RV32I: # %bb.0: # %entry
; RV32I-NEXT: lui a1, 1
; RV32I-NEXT: addi a1, a1, -96
; RV32I-NEXT: bne a0, a1, .LBB2_2
; RV32I-NEXT: # %bb.1: # %if.end
; RV32I-NEXT: mv a0, a1
; RV32I-NEXT: ret
; RV32I-NEXT: .LBB2_2: # %if.then
; RV32I-NEXT: li a0, 1
; RV32I-NEXT: ret
;
; RV32IXQCIBI-LABEL: test_e_beqi_li:
; RV32IXQCIBI: # %bb.0: # %entry
; RV32IXQCIBI-NEXT: qc.e.bnei a0, 4000, .LBB2_2
; RV32IXQCIBI-NEXT: # %bb.1: # %if.end
; RV32IXQCIBI-NEXT: lui a0, 1
; RV32IXQCIBI-NEXT: addi a0, a0, -96
; RV32IXQCIBI-NEXT: ret
; RV32IXQCIBI-NEXT: .LBB2_2: # %if.then
; RV32IXQCIBI-NEXT: li a0, 1
; RV32IXQCIBI-NEXT: ret
;
; RV32IXQCIBILI-LABEL: test_e_beqi_li:
; RV32IXQCIBILI: # %bb.0: # %entry
; RV32IXQCIBILI-NEXT: qc.e.beqi a0, 4000, .LBB2_2
; RV32IXQCIBILI-NEXT: # %bb.1: # %if.then
; RV32IXQCIBILI-NEXT: li a0, 1
; RV32IXQCIBILI-NEXT: .LBB2_2: # %if.end
; RV32IXQCIBILI-NEXT: ret
entry:
%cmp = icmp eq i32 %a, 4000
br i1 %cmp, label %if.end, label %if.then
if.then:
ret i32 1
if.end:
ret i32 4000
}