155 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=m68k < %s -o - | FileCheck %s3 4@g = internal global i32 10, align 45 6; This function is primarily testing constant constraints that can NOT7; be easily checked by Clang. For example, 'K' and 'M' are both8; constraints for values that are outside certain numerical range.9define void @constant_constraints() {10; CHECK-LABEL: constant_constraints:11; CHECK: .cfi_startproc12; CHECK-NEXT: ; %bb.0: ; %entry13; CHECK-NEXT: ;APP14; CHECK-NEXT: move.l #1, %d115; CHECK-NEXT: ;NO_APP16; CHECK-NEXT: ;APP17; CHECK-NEXT: move.l #8, %d118; CHECK-NEXT: ;NO_APP19; CHECK-NEXT: ;APP20; CHECK-NEXT: move.l #-32768, %d121; CHECK-NEXT: ;NO_APP22; CHECK-NEXT: ;APP23; CHECK-NEXT: move.l #32767, %d124; CHECK-NEXT: ;NO_APP25; CHECK-NEXT: ;APP26; CHECK-NEXT: move.l #-129, %d127; CHECK-NEXT: ;NO_APP28; CHECK-NEXT: ;APP29; CHECK-NEXT: move.l #128, %d130; CHECK-NEXT: ;NO_APP31; CHECK-NEXT: ;APP32; CHECK-NEXT: move.l #-8, %d133; CHECK-NEXT: ;NO_APP34; CHECK-NEXT: ;APP35; CHECK-NEXT: move.l #-1, %d136; CHECK-NEXT: ;NO_APP37; CHECK-NEXT: ;APP38; CHECK-NEXT: move.l #-257, %d139; CHECK-NEXT: ;NO_APP40; CHECK-NEXT: ;APP41; CHECK-NEXT: move.l #256, %d142; CHECK-NEXT: ;NO_APP43; CHECK-NEXT: ;APP44; CHECK-NEXT: move.l #24, %d145; CHECK-NEXT: ;NO_APP46; CHECK-NEXT: ;APP47; CHECK-NEXT: move.l #31, %d148; CHECK-NEXT: ;NO_APP49; CHECK-NEXT: ;APP50; CHECK-NEXT: move.l #16, %d151; CHECK-NEXT: ;NO_APP52; CHECK-NEXT: ;APP53; CHECK-NEXT: move.l #8, %d154; CHECK-NEXT: ;NO_APP55; CHECK-NEXT: ;APP56; CHECK-NEXT: move.l #15, %d157; CHECK-NEXT: ;NO_APP58; CHECK-NEXT: ;APP59; CHECK-NEXT: move.l #0, %d160; CHECK-NEXT: ;NO_APP61; CHECK-NEXT: ;APP62; CHECK-NEXT: move.l #1, %d163; CHECK-NEXT: ;NO_APP64; CHECK-NEXT: ;APP65; CHECK-NEXT: move.l #-32769, %d166; CHECK-NEXT: ;NO_APP67; CHECK-NEXT: ;APP68; CHECK-NEXT: move.l #32768, %d169; CHECK-NEXT: ;NO_APP70; CHECK-NEXT: rts71entry:72 call void asm sideeffect "move.l $0, %d1", "I"(i32 1)73 call void asm sideeffect "move.l $0, %d1", "I"(i32 8)74 call void asm sideeffect "move.l $0, %d1", "J"(i32 -32768)75 call void asm sideeffect "move.l $0, %d1", "J"(i32 32767)76 call void asm sideeffect "move.l $0, %d1", "K"(i32 -129)77 call void asm sideeffect "move.l $0, %d1", "K"(i32 128)78 call void asm sideeffect "move.l $0, %d1", "L"(i32 -8)79 call void asm sideeffect "move.l $0, %d1", "L"(i32 -1)80 call void asm sideeffect "move.l $0, %d1", "M"(i32 -257)81 call void asm sideeffect "move.l $0, %d1", "M"(i32 256)82 call void asm sideeffect "move.l $0, %d1", "N"(i32 24)83 call void asm sideeffect "move.l $0, %d1", "N"(i32 31)84 call void asm sideeffect "move.l $0, %d1", "O"(i32 16)85 call void asm sideeffect "move.l $0, %d1", "P"(i32 8)86 call void asm sideeffect "move.l $0, %d1", "P"(i32 15)87 call void asm sideeffect "move.l $0, %d1", "^C0"(i32 0)88 call void asm sideeffect "move.l $0, %d1", "^Ci"(i32 1)89 call void asm sideeffect "move.l $0, %d1", "^Cj"(i32 -32769)90 call void asm sideeffect "move.l $0, %d1", "^Cj"(i32 32768)91 ret void92}93 94define void @register_constraints() {95; CHECK-LABEL: register_constraints:96; CHECK: .cfi_startproc97; CHECK-NEXT: ; %bb.0: ; %entry98; CHECK-NEXT: suba.l #4, %sp99; CHECK-NEXT: .cfi_def_cfa_offset -8100; CHECK-NEXT: ;APP101; CHECK-NEXT: move.l #94, %d0102; CHECK-NEXT: ;NO_APP103; CHECK-NEXT: move.l %d0, (0,%sp)104; CHECK-NEXT: ;APP105; CHECK-NEXT: move.l #87, %d0106; CHECK-NEXT: ;NO_APP107; CHECK-NEXT: move.l %d0, (0,%sp)108; CHECK-NEXT: ;APP109; CHECK-NEXT: move.l #66, %a0110; CHECK-NEXT: ;NO_APP111; CHECK-NEXT: move.l %a0, (0,%sp)112; CHECK-NEXT: adda.l #4, %sp113; CHECK-NEXT: rts114entry:115 %out = alloca i32, align 4116 %0 = call i32 asm sideeffect "move.l #94, $0", "=r"()117 store i32 %0, ptr %out, align 4118 %1 = call i32 asm sideeffect "move.l #87, $0", "=d"()119 store i32 %1, ptr %out, align 4120 %2 = call i32 asm sideeffect "move.l #66, $0", "=a"()121 store i32 %2, ptr %out, align 4122 ret void123}124 125define void @memory_constraints() {126; CHECK-LABEL: memory_constraints:127; CHECK: .cfi_startproc128; CHECK-NEXT: ; %bb.0: ; %entry129; CHECK-NEXT: suba.l #4, %sp130; CHECK-NEXT: .cfi_def_cfa_offset -8131; CHECK-NEXT: ;APP132; CHECK-NEXT: move.l (0,%sp), %d1133; CHECK-NEXT: ;NO_APP134; CHECK-NEXT: ;APP135; CHECK-NEXT: move.l (g,%pc), %d2136; CHECK-NEXT: ;NO_APP137; CHECK-NEXT: lea (0,%sp), %a0138; CHECK-NEXT: ;APP139; CHECK-NEXT: move.l (%a0), %d3140; CHECK-NEXT: ;NO_APP141; CHECK-NEXT: ;APP142; CHECK-NEXT: move.l (0,%sp), %d4143; CHECK-NEXT: ;NO_APP144; CHECK-NEXT: adda.l #4, %sp145; CHECK-NEXT: rts146entry:147 %x = alloca i32, align 4148 call void asm sideeffect "move.l $0, %d1", "*m"(ptr elementtype(i32) %x)149 call void asm sideeffect "move.l $0, %d2", "*m"(ptr elementtype(i32) @g)150 call void asm sideeffect "move.l $0, %d3", "*Q"(ptr elementtype(i32) %x)151 call void asm sideeffect "move.l $0, %d4", "*U"(ptr elementtype(i32) %x)152 ret void153}154 155