brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.9 KiB · a351f0d Raw
173 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -verify-machineinstrs -o - %s -mtriple=arm64-apple-ios7.0 | FileCheck %s3 4define i64 @test0() {5; CHECK-LABEL: test0:6; CHECK:       ; %bb.0:7; CHECK-NEXT:    mov x0, xzr8; CHECK-NEXT:    ret9; Not produced by move wide instructions, but good to make sure we can return 0 anyway:10  ret i64 011}12 13define i64 @test1() {14; CHECK-LABEL: test1:15; CHECK:       ; %bb.0:16; CHECK-NEXT:    mov w0, #1 ; =0x117; CHECK-NEXT:    ret18  ret i64 119}20 21define i64 @test2() {22; CHECK-LABEL: test2:23; CHECK:       ; %bb.0:24; CHECK-NEXT:    mov w0, #65535 ; =0xffff25; CHECK-NEXT:    ret26  ret i64 6553527}28 29define i64 @test3() {30; CHECK-LABEL: test3:31; CHECK:       ; %bb.0:32; CHECK-NEXT:    mov w0, #65536 ; =0x1000033; CHECK-NEXT:    ret34  ret i64 6553635}36 37define i64 @test4() {38; CHECK-LABEL: test4:39; CHECK:       ; %bb.0:40; CHECK-NEXT:    mov w0, #-65536 ; =0xffff000041; CHECK-NEXT:    ret42  ret i64 429490176043}44 45define i64 @test5() {46; CHECK-LABEL: test5:47; CHECK:       ; %bb.0:48; CHECK-NEXT:    mov x0, #4294967296 ; =0x10000000049; CHECK-NEXT:    ret50  ret i64 429496729651}52 53define i64 @test6() {54; CHECK-LABEL: test6:55; CHECK:       ; %bb.0:56; CHECK-NEXT:    mov x0, #281470681743360 ; =0xffff0000000057; CHECK-NEXT:    ret58  ret i64 28147068174336059}60 61define i64 @test7() {62; CHECK-LABEL: test7:63; CHECK:       ; %bb.0:64; CHECK-NEXT:    mov x0, #281474976710656 ; =0x100000000000065; CHECK-NEXT:    ret66  ret i64 28147497671065667}68 69; A 32-bit MOVN can generate some 64-bit patterns that a 64-bit one70; couldn't. Useful even for i6471define i64 @test8() {72; CHECK-LABEL: test8:73; CHECK:       ; %bb.0:74; CHECK-NEXT:    mov w0, #-60876 ; =0xffff123475; CHECK-NEXT:    ret76  ret i64 429490642077}78 79define i64 @test9() {80; CHECK-LABEL: test9:81; CHECK:       ; %bb.0:82; CHECK-NEXT:    mov x0, #-1 ; =0xffffffffffffffff83; CHECK-NEXT:    ret84  ret i64 -185}86 87define i64 @test10() {88; CHECK-LABEL: test10:89; CHECK:       ; %bb.0:90; CHECK-NEXT:    mov x0, #-3989504001 ; =0xffffffff1234ffff91; CHECK-NEXT:    ret92  ret i64 1844674406972004761593}94 95; For reasonably legitimate reasons returning an i32 results in the96; selection of an i64 constant, so we need a different idiom to test that selection97@var32 = global i32 098 99define void @test11() {100; CHECK-LABEL: test11:101; CHECK:       ; %bb.0:102; CHECK-NEXT:    adrp x8, _var32@PAGE103; CHECK-NEXT:    str wzr, [x8, _var32@PAGEOFF]104; CHECK-NEXT:    ret105  store i32 0, ptr @var32106  ret void107}108 109define void @test12() {110; CHECK-LABEL: test12:111; CHECK:       ; %bb.0:112; CHECK-NEXT:    adrp x8, _var32@PAGE113; CHECK-NEXT:    mov w9, #1 ; =0x1114; CHECK-NEXT:    str w9, [x8, _var32@PAGEOFF]115; CHECK-NEXT:    ret116  store i32 1, ptr @var32117  ret void118}119 120define void @test13() {121; CHECK-LABEL: test13:122; CHECK:       ; %bb.0:123; CHECK-NEXT:    adrp x8, _var32@PAGE124; CHECK-NEXT:    mov w9, #65535 ; =0xffff125; CHECK-NEXT:    str w9, [x8, _var32@PAGEOFF]126; CHECK-NEXT:    ret127  store i32 65535, ptr @var32128  ret void129}130 131define void @test14() {132; CHECK-LABEL: test14:133; CHECK:       ; %bb.0:134; CHECK-NEXT:    adrp x8, _var32@PAGE135; CHECK-NEXT:    mov w9, #65536 ; =0x10000136; CHECK-NEXT:    str w9, [x8, _var32@PAGEOFF]137; CHECK-NEXT:    ret138  store i32 65536, ptr @var32139  ret void140}141 142define void @test15() {143; CHECK-LABEL: test15:144; CHECK:       ; %bb.0:145; CHECK-NEXT:    adrp x8, _var32@PAGE146; CHECK-NEXT:    mov w9, #-65536 ; =0xffff0000147; CHECK-NEXT:    str w9, [x8, _var32@PAGEOFF]148; CHECK-NEXT:    ret149  store i32 4294901760, ptr @var32150  ret void151}152 153define void @test16() {154; CHECK-LABEL: test16:155; CHECK:       ; %bb.0:156; CHECK-NEXT:    adrp x8, _var32@PAGE157; CHECK-NEXT:    mov w9, #-1 ; =0xffffffff158; CHECK-NEXT:    str w9, [x8, _var32@PAGEOFF]159; CHECK-NEXT:    ret160  store i32 -1, ptr @var32161  ret void162}163 164define i64 @test17() {165; CHECK-LABEL: test17:166; CHECK:       ; %bb.0:167; CHECK-NEXT:    mov x0, #-3 ; =0xfffffffffffffffd168; CHECK-NEXT:    ret169 170  ; Mustn't MOVN w0 here.171  ret i64 -3172}173