The scale is a signed quantity. This avoids an assertion failure with github.com/llvm/llvm-project/pull/171456.
21 lines
724 B
LLVM
21 lines
724 B
LLVM
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
|
|
; RUN: opt -codegenprepare -mtriple=arm-unknown-linux-gnueabihf -S < %s | FileCheck %s
|
|
|
|
define i8 @test(ptr %arg, i32 %arg2) {
|
|
; CHECK-LABEL: define i8 @test(
|
|
; CHECK-SAME: ptr [[ARG:%.*]], i32 [[ARG2:%.*]]) {
|
|
; CHECK-NEXT: [[SPLIT:.*:]]
|
|
; CHECK-NEXT: [[SUNKADDR:%.*]] = mul i32 [[ARG2]], -1
|
|
; CHECK-NEXT: [[SUNKADDR1:%.*]] = getelementptr i8, ptr [[ARG]], i32 [[SUNKADDR]]
|
|
; CHECK-NEXT: [[LOAD:%.*]] = load i8, ptr [[SUNKADDR1]], align 1
|
|
; CHECK-NEXT: ret i8 [[LOAD]]
|
|
;
|
|
%mul = mul i32 %arg2, -1
|
|
br label %split
|
|
|
|
split:
|
|
%gep = getelementptr i8, ptr %arg, i32 %mul
|
|
%load = load i8, ptr %gep
|
|
ret i8 %load
|
|
}
|