1; This tests the basic structure of the Unreachable instruction. 2 3; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 4; RUN: --target x8632 -i %s --args -O2 \ 5; RUN: | %if --need=target_X8632 --command FileCheck %s 6; RUN: %if --need=target_X8632 --command %p2i --filetype=obj --disassemble \ 7; RUN: --target x8632 -i %s --args -Om1 \ 8; RUN: | %if --need=target_X8632 --command FileCheck %s 9 10; RUN: %if --need=target_ARM32 \ 11; RUN: --command %p2i --filetype=obj \ 12; RUN: --disassemble --target arm32 -i %s --args -O2 \ 13; RUN: | %if --need=target_ARM32 \ 14; RUN: --command FileCheck --check-prefix ARM32 %s 15; RUN: %if --need=target_ARM32 \ 16; RUN: --command %p2i --filetype=obj \ 17; RUN: --disassemble --target arm32 -i %s --args -Om1 \ 18; RUN: | %if --need=target_ARM32 \ 19; RUN: --command FileCheck --check-prefix ARM32 %s 20 21; RUN: %if --need=target_MIPS32 --need=allow_dump \ 22; RUN: --command %p2i --filetype=asm --assemble \ 23; RUN: --disassemble --target mips32 -i %s --args -Om1 \ 24; RUN: | %if --need=target_MIPS32 --need=allow_dump \ 25; RUN: --command FileCheck --check-prefix MIPS32 %s 26 27; RUN: %if --need=target_MIPS32 --need=allow_dump \ 28; RUN: --command %p2i --filetype=asm --assemble \ 29; RUN: --disassemble --target mips32 -i %s --args -O2 \ 30; RUN: | %if --need=target_MIPS32 --need=allow_dump \ 31; RUN: --command FileCheck --check-prefix MIPS32-O2 %s 32 33define internal i32 @divide(i32 %num, i32 %den) { 34entry: 35 %cmp = icmp ne i32 %den, 0 36 br i1 %cmp, label %return, label %abort 37 38abort: ; preds = %entry 39 unreachable 40 41return: ; preds = %entry 42 %div = sdiv i32 %num, %den 43 ret i32 %div 44} 45 46; CHECK-LABEL: divide 47; CHECK: cmp 48; CHECK: ud2 49; CHECK: cdq 50; CHECK: idiv 51; CHECK: ret 52 53; ARM32-LABEL: divide 54; ARM32: tst 55; ARM32: e7fedef0 56; ARM32: bl {{.*}} __divsi3 57; ARM32: bx lr 58 59; MIPS32-LABEL: divide 60; MIPS32: beqz 61; MIPS32: nop 62; MIPS32: teq zero,zero 63; MIPS32: div 64 65; MIPS32-O2-LABEL: divide 66; MIPS32-O2: bne 67; MIPS32-O2: nop 68; MIPS32-O2: teq zero,zero 69; MIPS32-O2: div 70