[RISCV] Pre-commit tests for D128843. NFC

This commit is contained in:
Craig Topper 2022-06-29 11:20:30 -07:00
parent f892ddb3be
commit 75095e6281
1 changed files with 84 additions and 0 deletions

View File

@ -0,0 +1,84 @@
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \
; RUN: | FileCheck %s -check-prefix=RV64I
; Test that we turn (sra (shl X, 32), 32-C) into (slli (sext.w X), C)
define i64 @test1(i64 %a) nounwind {
; RV64I-LABEL: test1:
; RV64I: # %bb.0:
; RV64I-NEXT: slli a0, a0, 32
; RV64I-NEXT: srai a0, a0, 30
; RV64I-NEXT: ret
%1 = shl i64 %a, 32
%2 = ashr i64 %1, 30
ret i64 %2
}
define i64 @test2(i32 signext %a) nounwind {
; RV64I-LABEL: test2:
; RV64I: # %bb.0:
; RV64I-NEXT: slli a0, a0, 32
; RV64I-NEXT: srai a0, a0, 29
; RV64I-NEXT: ret
%1 = zext i32 %a to i64
%2 = shl i64 %1, 32
%3 = ashr i64 %2, 29
ret i64 %3
}
define i64 @test3(i32* %a) nounwind {
; RV64I-LABEL: test3:
; RV64I: # %bb.0:
; RV64I-NEXT: lw a0, 0(a0)
; RV64I-NEXT: slli a0, a0, 32
; RV64I-NEXT: srai a0, a0, 28
; RV64I-NEXT: ret
%1 = load i32, i32* %a
%2 = zext i32 %1 to i64
%3 = shl i64 %2, 32
%4 = ashr i64 %3, 28
ret i64 %4
}
define i64 @test4(i32 signext %a, i32 signext %b) nounwind {
; RV64I-LABEL: test4:
; RV64I: # %bb.0:
; RV64I-NEXT: addw a0, a0, a1
; RV64I-NEXT: slli a0, a0, 32
; RV64I-NEXT: srai a0, a0, 2
; RV64I-NEXT: ret
%1 = add i32 %a, %b
%2 = zext i32 %1 to i64
%3 = shl i64 %2, 32
%4 = ashr i64 %3, 2
ret i64 %4
}
define i64 @test5(i32 signext %a, i32 signext %b) nounwind {
; RV64I-LABEL: test5:
; RV64I: # %bb.0:
; RV64I-NEXT: xor a0, a0, a1
; RV64I-NEXT: slli a0, a0, 32
; RV64I-NEXT: srai a0, a0, 1
; RV64I-NEXT: ret
%1 = xor i32 %a, %b
%2 = zext i32 %1 to i64
%3 = shl i64 %2, 32
%4 = ashr i64 %3, 1
ret i64 %4
}
define i64 @test6(i32 signext %a, i32 signext %b) nounwind {
; RV64I-LABEL: test6:
; RV64I: # %bb.0:
; RV64I-NEXT: sllw a0, a0, a1
; RV64I-NEXT: slli a0, a0, 32
; RV64I-NEXT: srai a0, a0, 16
; RV64I-NEXT: ret
%1 = shl i32 %a, %b
%2 = zext i32 %1 to i64
%3 = shl i64 %2, 32
%4 = ashr i64 %3, 16
ret i64 %4
}