brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.2 KiB · d87e9c4 Raw
91 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py2; RUN: llc -O0 -mtriple=aarch64-linux-gnu -global-isel -stop-after=irtranslator %s -o - | FileCheck %s3 4define i32 @call_trunc_no_flags(i64 %a) {5  ; CHECK-LABEL: name: call_trunc_no_flags6  ; CHECK: bb.1.entry:7  ; CHECK-NEXT:   liveins: $x08  ; CHECK-NEXT: {{  $}}9  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x010  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = G_TRUNC [[COPY]](s64)11  ; CHECK-NEXT:   $w0 = COPY [[TRUNC]](s32)12  ; CHECK-NEXT:   RET_ReallyLR implicit $w013entry:14  %result = trunc i64 %a to i3215  ret i32 %result16}17 18define i32 @call_trunc_nsw_flags(i64 %a) {19  ; CHECK-LABEL: name: call_trunc_nsw_flags20  ; CHECK: bb.1.entry:21  ; CHECK-NEXT:   liveins: $x022  ; CHECK-NEXT: {{  $}}23  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x024  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = nsw G_TRUNC [[COPY]](s64)25  ; CHECK-NEXT:   $w0 = COPY [[TRUNC]](s32)26  ; CHECK-NEXT:   RET_ReallyLR implicit $w027entry:28  %result = trunc nsw i64 %a to i3229  ret i32 %result30}31 32define i32 @call_trunc_nuw_flags(i64 %a) {33  ; CHECK-LABEL: name: call_trunc_nuw_flags34  ; CHECK: bb.1.entry:35  ; CHECK-NEXT:   liveins: $x036  ; CHECK-NEXT: {{  $}}37  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x038  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = nuw G_TRUNC [[COPY]](s64)39  ; CHECK-NEXT:   $w0 = COPY [[TRUNC]](s32)40  ; CHECK-NEXT:   RET_ReallyLR implicit $w041entry:42  %result = trunc nuw i64 %a to i3243  ret i32 %result44}45 46define i32 @call_trunc_all_flags(i64 %a) {47  ; CHECK-LABEL: name: call_trunc_all_flags48  ; CHECK: bb.1.entry:49  ; CHECK-NEXT:   liveins: $x050  ; CHECK-NEXT: {{  $}}51  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(s64) = COPY $x052  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(s32) = nuw nsw G_TRUNC [[COPY]](s64)53  ; CHECK-NEXT:   $w0 = COPY [[TRUNC]](s32)54  ; CHECK-NEXT:   RET_ReallyLR implicit $w055entry:56  %result = trunc nsw nuw i64 %a to i3257  ret i32 %result58}59 60define <2 x i64> @call_trunc_noop_signed_vector(<2 x i64> %a) {61  ; CHECK-LABEL: name: call_trunc_noop_signed_vector62  ; CHECK: bb.1.entry:63  ; CHECK-NEXT:   liveins: $q064  ; CHECK-NEXT: {{  $}}65  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q066  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(<2 x s32>) = nsw G_TRUNC [[COPY]](<2 x s64>)67  ; CHECK-NEXT:   [[SEXT:%[0-9]+]]:_(<2 x s64>) = G_SEXT [[TRUNC]](<2 x s32>)68  ; CHECK-NEXT:   $q0 = COPY [[SEXT]](<2 x s64>)69  ; CHECK-NEXT:   RET_ReallyLR implicit $q070entry:71  %truncate = trunc nsw <2 x i64> %a to <2 x i32>72  %result = sext <2 x i32> %truncate to <2 x i64>73  ret <2 x i64> %result74}75 76define <2 x i64> @call_trunc_noop_unsigned_vector(<2 x i64> %a) {77  ; CHECK-LABEL: name: call_trunc_noop_unsigned_vector78  ; CHECK: bb.1.entry:79  ; CHECK-NEXT:   liveins: $q080  ; CHECK-NEXT: {{  $}}81  ; CHECK-NEXT:   [[COPY:%[0-9]+]]:_(<2 x s64>) = COPY $q082  ; CHECK-NEXT:   [[TRUNC:%[0-9]+]]:_(<2 x s32>) = nuw G_TRUNC [[COPY]](<2 x s64>)83  ; CHECK-NEXT:   [[ZEXT:%[0-9]+]]:_(<2 x s64>) = G_ZEXT [[TRUNC]](<2 x s32>)84  ; CHECK-NEXT:   $q0 = COPY [[ZEXT]](<2 x s64>)85  ; CHECK-NEXT:   RET_ReallyLR implicit $q086entry:87  %truncate = trunc nuw <2 x i64> %a to <2 x i32>88  %result = zext <2 x i32> %truncate to <2 x i64>89  ret <2 x i64> %result90}91