llvm-project/llvm/test/CodeGen/AVR/std-immediate-overflow.ll
Fangrui Song 9ef1d37ffb [AVR,test] Change llc -march= to -mtriple=
Similar to 806761a7629df268c8aed49657aeccffa6bca449

-mtriple= specifies the full target triple while -march= merely sets the
architecture part of the default target triple, leaving a target triple which
may not make sense.

Therefore, -march= is error-prone and not recommended for tests without a target
triple. The issue has been benign as we recognize avr-apple-darwin as ELF instead
of rejecting it outrightly.
2024-12-15 10:26:33 -08:00

138 lines
2.9 KiB
LLVM

; RUN: llc -mtriple=avr -filetype=asm -O1 < %s | FileCheck %s
define void @check60(ptr %1) {
; CHECK-LABEL: check60:
; CHECK-NEXT: %bb.0
; CHECK-NEXT: ldi r18, 0
; CHECK-NEXT: ldi r19, 0
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+63, r19
; CHECK-NEXT: std Z+62, r18
; CHECK-NEXT: ldi r24, 210
; CHECK-NEXT: ldi r25, 4
; CHECK-NEXT: std Z+61, r25
; CHECK-NEXT: std Z+60, r24
; CHECK-NEXT: ret
bb0:
%2 = getelementptr i8, ptr %1, i8 60
store i32 1234, ptr %2
ret void
}
define void @check61(ptr %1) {
; CHECK-LABEL: check61:
; CHECK-NEXT: %bb.0
; CHECK-NEXT: ldi r18, 210
; CHECK-NEXT: ldi r19, 4
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+62, r19
; CHECK-NEXT: std Z+61, r18
; CHECK-NEXT: adiw r24, 63
; CHECK-NEXT: ldi r18, 0
; CHECK-NEXT: ldi r19, 0
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+1, r19
; CHECK-NEXT: st Z, r18
bb0:
%2 = getelementptr i8, ptr %1, i8 61
store i32 1234, ptr %2
ret void
}
define void @check62(ptr %1) {
; CHECK-LABEL: check62:
; CHECK-NEXT: %bb.0
; CHECK-NEXT: ldi r18, 210
; CHECK-NEXT: ldi r19, 4
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+63, r19
; CHECK-NEXT: std Z+62, r18
; CHECK-NEXT: adiw r24, 62
; CHECK-NEXT: ldi r18, 0
; CHECK-NEXT: ldi r19, 0
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+3, r19
; CHECK-NEXT: std Z+2, r18
; CHECK-NEXT: ret
bb0:
%2 = getelementptr i8, ptr %1, i8 62
store i32 1234, ptr %2
ret void
}
define void @check63(ptr %1) {
; CHECK-LABEL: check63:
; CHECK-NEXT: %bb.0
; CHECK-NEXT: adiw r24, 63
; CHECK-NEXT: ldi r18, 0
; CHECK-NEXT: ldi r19, 0
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+3, r19
; CHECK-NEXT: std Z+2, r18
; CHECK-NEXT: ldi r24, 210
; CHECK-NEXT: ldi r25, 4
; CHECK-NEXT: std Z+1, r25
; CHECK-NEXT: st Z, r24
; CHECK-NEXT: ret
bb0:
%2 = getelementptr i8, ptr %1, i8 63
store i32 1234, ptr %2
ret void
}
define void @check64(ptr %1) {
; CHECK-LABEL: check64:
; CHECK-NEXT: %bb.0
; CHECK-NEXT: subi r24, 192
; CHECK-NEXT: sbci r25, 255
; CHECK-NEXT: ldi r18, 0
; CHECK-NEXT: ldi r19, 0
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+3, r19
; CHECK-NEXT: std Z+2, r18
; CHECK-NEXT: ldi r24, 210
; CHECK-NEXT: ldi r25, 4
; CHECK-NEXT: std Z+1, r25
; CHECK-NEXT: st Z, r24
; CHECK-NEXT: ret
bb0:
%2 = getelementptr i8, ptr %1, i8 64
store i32 1234, ptr %2
ret void
}
define void @check65(ptr %1) {
; CHECK-LABEL: check65:
; CHECK-NEXT: %bb.0
; CHECK-NEXT: subi r24, 191
; CHECK-NEXT: sbci r25, 255
; CHECK-NEXT: ldi r18, 0
; CHECK-NEXT: ldi r19, 0
; CHECK-NEXT: mov r30, r24
; CHECK-NEXT: mov r31, r25
; CHECK-NEXT: std Z+3, r19
; CHECK-NEXT: std Z+2, r18
; CHECK-NEXT: ldi r24, 210
; CHECK-NEXT: ldi r25, 4
; CHECK-NEXT: std Z+1, r25
; CHECK-NEXT: st Z, r24
; CHECK-NEXT: ret
bb0:
%2 = getelementptr i8, ptr %1, i8 65
store i32 1234, ptr %2
ret void
}